2009-10-23 116 views
7

我们在自定义UserControl上的窗体上有几个DateTimePicker。它们是可见的,但未启用(仅用于显示目的)。在加载UserControl时,DateTimePickers将被赋予来自DataSet的DataRow中的值,该DataSet存储从SQL Server存储过程返回的单个记录。DateTimePicker显示今天的日期而不是显示其实际值

存在不一致的行为,其中用户有时会看到今天的日期而不是分配给DateTimePicker的日期。它似乎没有也罢我给你我想要的日期到.Value属性或属性。文本:

txtstart.Value = (DateTime) dr["Group_Start_Date"]; 
txtend.Text = dr["Term_Date"].ToString(); 

我预计这两种说法的上方,使用Value属性的一个更合适。但是,在这两种情况下,无论数据库中的值如何,今天的日期都会显示给用户。在txtstart.Value的情况下,Visual Studio显示该值已按预期分配。那么为什么它不是把这个日期显示给用户而不是今天的日期呢?

+1

如果DateTimePicker确定一个空值或空值,它将显示今天的日期。 – Stewbob 2009-10-23 19:06:19

+3

那么如果DateTimePicker是* always * disabled,为什么不使用文本框呢? – abhilash 2009-10-23 19:11:15

+0

其实我已经把这些切换到了文本框,因为我无法确定为什么一个禁用的控件在那里。但问题仍然存在。如果我在代码中为DateTimePicker赋值,那就是我期望在运行时看到的值。 – reverendlarry 2009-10-23 19:31:56

回答

0

我结束了AB诺兰的建议。禁用DateTimePicker背后的原因从来不明白,所以回到2009年10月23日,而不是继续与控制混淆,我只是在TextBoxes中显示我想要的日期。

0

这似乎是有多个DateTimePickers的问题。我能够通过编程方式创建带有我想要的值的DateTimePickers并将它们添加到表单中来解决问题(bug?)。

0

我发现了根本问题在这里,answered it here在类似的问题,如果你们仍然想知道。

+0

我不确定这是否适用于我原来的情况。我的例子中的DateTimePickers是可见的,但是Enabled是错误的。 – reverendlarry 2011-10-27 14:50:20

13

我找到了答案。您必须将复选框值设置为选中以指示非空值。

this.dateSold.Checked = true; //根据需要设置为true或false this.dateSold.ShowCheckBox = false;

+0

作为问题的提问者,我无法确定这是否属实,因为我最终遵循了AB Kolan的建议并仅使用了文本框。但如果这对其他人有用,那么很好。 – reverendlarry 2011-10-27 14:49:30

+1

我确认'Checked'属性似乎是问题所在。即使它在设计器中设置为“true”,也可能包含“false”值。 – 2012-07-23 12:35:29

0

我也遇到过这个问题,发现你确实需要设置.Checked的值为True

我在属性窗口中设置了Checked属性,它仍然无法工作,所以我只是在分配值之前将其设置在代码中,并解决了问题。

相关问题