Windows形式的设计师不安控制与一个可空酒店
题
我有一个"数字文本框"。净是没有什么比一个派生的文本,有一些增加的逻辑,以防止用户进入任何非数字。作为其中的一部分,我们增加了一个价值财产的类型 double?
(或 Nullable<double>
).这就可以为空支持的情况下,用户不能进入任何东西。
控制正常工作时运行,但Windows形式的设计师似乎并不喜欢处理它了。当控制加入一形式中,以下代码行被中产生的InitializeComponent():
this.numericTextBox1.Value = 1;
记得"价值"的类型 Nullable<double>
.此产生的以下警告,每当我试图重新打开的形式在设计师:
Object of type 'System.Int32' cannot be converted to type 'System.Nullable`1[System.Double]'.
结果,形式不能被视为在设计师,直到我手动删除该行和重建-之后的再生,只要我保存的任何变化。讨厌。
任何建议?
解决方案
或者,如果你不想的设计中添加任何代码...这增加了财产。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
其他提示
看来,有一个问题在Visual Studio2008年。你应该创造定义CodeDomSerializer工作:
public class CategoricalDataPointCodeDomSerializer : CodeDomSerializer
{
public override object Deserialize(IDesignerSerializationManager manager, object codeObject)
{
CodeStatementCollection collection = codeObject as CodeStatementCollection;
if (collection != null)
{
foreach (CodeStatement statement in collection)
{
CodeAssignStatement codeAssignment = statement as CodeAssignStatement;
if (codeAssignment != null)
{
CodePropertyReferenceExpression properyRef = codeAssignment.Left as CodePropertyReferenceExpression;
CodePrimitiveExpression primitiveExpression = codeAssignment.Right as CodePrimitiveExpression;
if (properyRef != null && properyRef.PropertyName == "Value" && primitiveExpression != null && primitiveExpression.Value != null)
{
primitiveExpression.Value = Convert.ToDouble(primitiveExpression.Value);
break;
}
}
}
}
return base.Deserialize(manager, codeObject);
}
}
那么你应该将其应用的使用 DesignerSerializer 属于你的类。
能有助于设置的 默认值属性 在那酒店的新Nullable(1)?
[DefaultValue(new Nullable<double>(1))]
public double? Value ...
不隶属于 StackOverflow