我在Win-Forms计划中遇到了问题。我在我的DateTimePicker中添加了一个Value-Changed事件,如下所示:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
SendKeys.Send("{Right}");
}
出于某种原因,当插入数字12时,无论是在day字段还是在month字段中,都会交替触发事件。我尝试了很多其他数字,但它们都完美无缺。对于谁可能发现它相关,日期格式是dd / MM / yyyy。这是一个众所周知的问题吗?
编辑: 为了清楚起见,所有数字从1到31(当然除了12,当然)在白天发射它,以及月球场中1-11的所有数字
答案 0 :(得分:1)
我不太关心这种行为的原因,你没有足够好地记录这个问题来猜测一个准确的答案。 DateTimePicker是一个“棘手”的控件,试图破解它几乎不是一个错误。微软很多,它在Windows中的两个高度可见位置使用,在安装时让用户校准时钟和任务栏上的时钟小部件。强烈的外观和感觉。你没有提到你的Windows版本。
但是你的方法中最明显的缺陷是你永远不会让它变得可靠。 ValueChanged事件当然只会在实际更改日期时触发。如果没有,因为用户输入的日期或月份已经与Value属性匹配,那么您将无法获得该事件。所以一个简单的解释是你把它初始化到12月12日。你没有提到初始值。
您无法做任何事情来避免此问题,DTP不支持“null”日期,以确保事件始终触发。没有“用户完成输入”事件。这里的建议是我的医生倾向于依赖的建议:如果它疼,那就不要这样做。如果这很痛,那就自己动手吧。
答案 1 :(得分:0)
根据您提供的信息,问题无法重现。可能你错过了什么。
在Winform上添加一个简单的Datetimepicker控件并更改其值会不断调用value changed事件。
见下图:
当日期更改为11时,文本框将更新为11
在将日期更改为12时,文本框将更新为12
以下是更新文本框的代码
private void DateTimePicker1_ValueChanged(System.Object sender, System.EventArgs e)
{
TextBox1.Text = DateTimePicker1.Value.Day.ToString;
}
您可以在应用程序中添加新表单并对其进行测试,我相信它会正常工作。然后,您可以尝试找出实际应用中出现的问题。