событие key_down DateTimePicker - PullRequest
2 голосов
/ 16 мая 2011

Я использую этот DateTimePicker элемент управления в моем UI .

Я хочу, чтобы мой элемент управления работал так, как когда пользователь нажимает клавишу «удалить» или «backspace», значение, отображаемое в элементе управления DateTimePicker, должно быть пустой строкой.

По сути, мне удалось установить для его свойства CustomFormat пустую строку, чтобы при загрузке UI он показывался как нулевой.

Я использую событие KeyDown для проверки / подтверждения, введен ли пользователь Удалить или Клавиша Backspace . Пожалуйста, помогите.

Манали

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Это должно работать для вас. Вам нужно сбросить формат обратно на желаемый формат (длинный, короткий, время, пользовательский), прежде чем вы сможете получить новое значение. Сделайте это в событии ValueChanged.

    private void dateTimePicker1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Delete || e.KeyCode == Keys.Back)
        {
            dateTimePicker1.Format = DateTimePickerFormat.Custom;
            dateTimePicker1.CustomFormat = " ";
        }
    }

    private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
        dateTimePicker1.Format = DateTimePickerFormat.Long;
    } 

При сохранении значения для dateTimePicker вы можете проверить, если dateTimePicker1.Format == DateTimePickerFormat.Custom, а затем сохранить значение как нулевое в вашей базе данных.

Наслаждайтесь!

2 голосов
/ 16 мая 2011
  private void date_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.Key == Key.Back || e.Key == Key.Delete)
                date.SelectedDate = null;
        }
...