Сохранять конвертированными (с .ToString ()) конвертированную дату и время - PullRequest
0 голосов
/ 27 мая 2018

У меня есть TextBox, где есть дата.Я конвертирую дату со следующей строкой кода:

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

Текст в текстовом поле теперь «05/12/1978».

Но когда я щелкаю внутри текстового поля для редактированиядата, но я передумал и оставляю текстовое поле, текст выглядит следующим образом: «05.12.1978 0:00:00».

Я попытался исправить это, преобразовав дату в 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 голосов
/ 27 мая 2018

Когда вы используете привязку данных, он будет обновлять элемент управления при изменении данных.Если вы не укажете определенный формат, он будет использовать формат по умолчанию для этого.Установка привязанного свойства к определенному значению, как вы делаете, довольно необычно, поскольку вы обычно позволяете связанным данным определять отображаемое значение.В любом случае вы не можете полагаться на определенный формат, который вы используете при установке значения (если только он не соответствует формату привязки).

Решение в вашем случае - установить формат привязки:

// Databindings
Binding textBoxBinding = new Binding("text", tblWerknemersBS, "Geboortedatum", true,
    DataSourceUpdateMode.OnValidation, null, "d");
textBox1.DataBindings.Add(textBoxBinding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...