保持转换(使用.ToString())转换日期时间

时间:2018-05-27 13:04:40

标签: c# winforms

我有一个TextBox,其中有一个日期。我用以下代码行转换日期:

txtTextbox.Text = Convert.ToDateTime(txtTextbox.Text).ToString("dd/MM/yyyy");

文本框中的文字现在是" 05/12 / 1978"。

但是当我在文本框内单击以编辑日期但我改变主意并离开文本框时,文本如下:&#34; 05/12/1978 0:00:00&#34;。< / p>

我尝试通过转换txtTextbox_Leave事件中的日期来解决此问题,但这不起作用。

编辑:

private void Form1_Load(object sender, EventArgs e)
    {
        // TableAdapters
        tblWerknemersTA = new dtsGIPTableAdapters.tblWerknemersTableAdapter();
        tblAfdelingenTA = new dtsGIPTableAdapters.tblAfdelingenTableAdapter();

        // DataSet
        dtsGIP = new dtsGIP();
        tblWerknemersTA.Fill(dtsGIP.tblWerknemers);
        tblAfdelingenTA.Fill(dtsGIP.tblAfdelingen);

        // DataView
        dtvWerknemers = dtsGIP.tblWerknemers.DefaultView;
        dtvWerknemers.Sort = "Familienaam ASC";

        // BindingSource
        tblWerknemersBS = new BindingSource();
        tblWerknemersBS.DataMember = "tblWerknemers";
        tblWerknemersBS.DataSource = dtvWerknemers;

        // Databindings
        textBox1.DataBindings.Add(new Binding("text", tblWerknemersBS, "Geboortedatum"));

        // Convert date
        textBox1.Text = Convert.ToDateTime(textBox1.Text).ToString("dd/MM/yyyy");
    }

在这个演示应用程序中,我有两个文本框,当我点击第一个然后再点击第二个文本框时会出现问题。

编辑2:

private void Form1_Load(object sender, EventArgs e)
    {
        // TableAdapters
        tblWerknemersTA = new dtsGIPTableAdapters.tblWerknemersTableAdapter();
        tblAfdelingenTA = new dtsGIPTableAdapters.tblAfdelingenTableAdapter();

        // DataSet
        dtsGIP = new dtsGIP();
        tblWerknemersTA.Fill(dtsGIP.tblWerknemers);
        tblAfdelingenTA.Fill(dtsGIP.tblAfdelingen);

        // DataView
        dtvWerknemers = dtsGIP.tblWerknemers.DefaultView;
        dtvWerknemers.Sort = "Familienaam ASC";

        // BindingSource
        tblWerknemersBS = new BindingSource();
        tblWerknemersBS.DataMember = "tblWerknemers";
        tblWerknemersBS.DataSource = dtvWerknemers;

        // Databindings
        Binding textBoxBinding = new Binding("text", tblWerknemersBS, "Geboortedatum");
        textBoxBinding.FormatString = "dd/MM/yyyy";
        textBox1.DataBindings.Add(textBoxBinding);
    }

1 个答案:

答案 0 :(得分:1)

使用数据绑定时,它会在数据更改时更新控件。除非您指定特定格式,否则它将使用默认格式。将bound属性设置为特定值是相当不寻常的,因为您通常让绑定数据确定显示的值。在任何情况下,您都不能依赖于设置值时使用的特定格式(除非它与绑定格式匹配)。

您的案例中的解决方案是设置绑定格式:

// Databindings
Binding textBoxBinding = new Binding("text", tblWerknemersBS, "Geboortedatum", true,
    DataSourceUpdateMode.OnValidation, null, "d");
textBox1.DataBindings.Add(textBoxBinding);