c# - DateTimePicker 更改值不会触发值更改事件 - Winforms

标签 c# winforms datetimepicker

我在使用 DateTimePicker 控件时遇到了奇怪的情况。我有一个短日期格式的 DateTimePicker 控件。

我按以下方式在文本框中设置此控件的值:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
      textBox1.Text = dateTimePicker1.Value.ToShortDateString();
    }

现在,当我尝试更改月份(控件的第一部分)时,如果我输入两位数,它会触发 ValueChanged 事件,否则不会。

比方说,我正在尝试进入第 6 个月,然后在键盘上按 6,这次 ValueChanged 事件没有触发。但是当我按下 0 和 6 时,它会触发该事件。如果我输入 11 或 12,它会触发 ValueChanged 事件。这同样适用于日期部分。

简而言之,当我在日期或月份部分输入单个数字时它不会触发 ValueChanged 事件,但当我输入两位数字时它会触发。谁能告诉我为什么会这样?这是 DTP 的预期行为吗?

如何让它在我输入个位数时触发该事件?

最佳答案

为了保持一致性和简单性,该字段需要 2 位数字,因此应该等待两者都输入才能触发事件。如果您输入 1 表示一月,即使它不知道您可能输入另一个数字代表 Oct (0)、Nov (1) 或 Dec (2),它是否应该触发

我希望如果您输入 6 并离开该事件将会触发。

尽管您可以对 TextChanged 事件执行某些操作,如果您键入一个数字,该事件应该会被触发,但我不确定它在使用鼠标选择日期时是否会起作用(最好检查一下我记得有一段时间我没有开火的问题)

关于c# - DateTimePicker 更改值不会触发值更改事件 - Winforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4076743/

相关文章:

c# - 迁移到 Windows 7 - 这将如何影响我的软件?

c# - 一次编译为两个 .NET 框架

c# - 如何设置 Visual-Studio .NET CompactFramework Windows-CE 默认窗口大小

c# - 有状态 Winform 和取消按钮

c# - 日期时间选择器验证

c# - 使用 JSON.NET 反序列化值为字段名称的 JSON

winforms - 如何通过代码打开窗口的系统菜单?

c# - CheckedListBox 控件是否有 "DisplayMember"和 "ValueMember"之类的属性? C# 窗体

c# - 选择将日期和分隔时间与 sql 日期/分隔时间进行比较的 amountofpersons C#