C# 将日期数据类型的SqlDataReader放入maskedtextbox

C# 将日期数据类型的SqlDataReader放入maskedtextbox,c#,sql,sql-server,winforms,C#,Sql,Sql Server,Winforms,您好,我有一个SqlDataReader,它用掩码MM/DD/YYYY将日期数据类型从SQL DB读取到maskedTextBox,但当日期为2005年5月5日时,它将显示在maskedTextBox中,如Windows XP上的55/20/05所示 有没有办法防止这种情况发生 在Windows 8上,它被读取为5_u/5_u/2005,这是正确的 string query = "SELECT * FROM events WHERE name='" + selectedro

您好,我有一个
SqlDataReader
,它用掩码
MM/DD/YYYY
将日期数据类型从SQL DB读取到
maskedTextBox
,但当日期为2005年5月5日时,它将显示在maskedTextBox中,如Windows XP上的55/20/05所示

有没有办法防止这种情况发生

在Windows 8上,它被读取为5_u/5_u/2005,这是正确的

           string query = "SELECT * FROM events WHERE name='" + selectedrow + "' AND year='" + selectedyear+ "'";
            SqlCommand command= new SqlCommand(query, con);
            con.Open();
            SqlDataReader read= command.ExecuteReader();

            if (read.Read())
            {

                object nulldate = (maskedTextBox2.Text = read.IsDBNull(24) ? 
                    string.Empty : read.GetDateTime(24).ToShortDateString()); } con.Close();

谢谢你抽出时间

我没有使用屏蔽文本框,但是您可以使用提供格式选项的DateTime-ToString覆盖之一

如本文所述,类似以下内容:

string formatted = read.IsDBNull(24) ? string.Empty : read.GetDateTime(24).ToString("MM/dd/yyyy");

屏蔽文本框仅在windows xp SP3(或针对x64版本的SP2)上受支持。最简单的解决方案是在安装的xp上运行windows update。(请注意,您的sql cmd字符串易受注入攻击)@Amber这是正确的,我的测试机器是SP3,maskedtextbox显示正确,但加载日期和月份时,屏幕上没有0。例如,2012年12月12日将正确加载