如何在 PropertyGrid 中保存只读 属性 值
How to save readonly property value in PropertyGrid
我有一个习惯class:
[TypeConverter(typeof(ExpandableObjectConverter))]
public class CustomClass
{
public int State { get; set; }
}
只读 属性:
public class MyControl : UserControl
{
public CustomClass MyProperty { get; } = new CustomClass();
}
属性 在属性 window 中显示并可编辑。
但该值未保存,如果重新打开设计器,它会恢复。
我认为设计师生成这样的代码并不难:
myControl.MyProperty.State = 1;
如何使只读 属性 可保存?
您可以将两个不同的属性与支持字段一起使用。使用 ReadOnly
属性
检查我下面的答案
[ReadOnly(true)]
public int ReadOnlyStateProp
{
get
{
return _ReadOnlyState;
}
set
{
_ReadOnlyState = value;
}
}
public int ReadOnlyState
{
get
{
return _ReadOnlyState;
}
set
{
_ReadOnlyState = value;
}
}
现在您可以将 ReadOnlyStateProp
用于 属性 window 和 ReadOnlyState
在可编辑的上下文中。
找了几天找到解决方法,很简单:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CustomClass MyProperty { get; } = new CustomClass();
我有一个习惯class:
[TypeConverter(typeof(ExpandableObjectConverter))]
public class CustomClass
{
public int State { get; set; }
}
只读 属性:
public class MyControl : UserControl
{
public CustomClass MyProperty { get; } = new CustomClass();
}
属性 在属性 window 中显示并可编辑。
但该值未保存,如果重新打开设计器,它会恢复。
我认为设计师生成这样的代码并不难:
myControl.MyProperty.State = 1;
如何使只读 属性 可保存?
您可以将两个不同的属性与支持字段一起使用。使用 ReadOnly
属性
[ReadOnly(true)]
public int ReadOnlyStateProp
{
get
{
return _ReadOnlyState;
}
set
{
_ReadOnlyState = value;
}
}
public int ReadOnlyState
{
get
{
return _ReadOnlyState;
}
set
{
_ReadOnlyState = value;
}
}
现在您可以将 ReadOnlyStateProp
用于 属性 window 和 ReadOnlyState
在可编辑的上下文中。
找了几天找到解决方法,很简单:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CustomClass MyProperty { get; } = new CustomClass();