Windows窗体设计器被具有可为空属性的控件所困扰

时间:2020-03-05 18:51:26  来源:igfitidea点击:

我在C.NET中有一个"数字文本框",无非就是文本框的派生,还有一些添加的逻辑可以防止用户输入任何非数字的内容。作为此过程的一部分,我添加了一个类型为double(或者Nullable <double>)的Value属性。支持用户不输入任何内容的情况为空。

该控件在运行时工作正常,但是Windows窗体设计器似乎不太喜欢处理它。将控件添加到窗体时,在InitializeComponent()中生成以下代码行:

this.numericTextBox1.Value = 1;

请记住,"值"的类型为" Nullable <double>"。每当我尝试在设计器中重新打开表单时,都会生成以下警告:

Object of type 'System.Int32' cannot be converted to type 'System.Nullable`1[System.Double]'.

结果,在我手动删除该行并重建之后,一旦我保存任何更改,便会重新生成该表单,因此无法在Designer中查看该表单。恼人的。

有什么建议?

解决方案

回答

将该属性的DefaultValue属性设置为新的Nullable(1)有助于吗?

[DefaultValue(new Nullable<double>(1))]  
public double? Value ...

回答

或者,如果我们根本不希望设计师添加任何代码,则将其添加到属性中。

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]