Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 阻止windows窗体设计器设置属性的属性是什么_C#_Winforms_Windows Forms Designer - Fatal编程技术网

C# 阻止windows窗体设计器设置属性的属性是什么

C# 阻止windows窗体设计器设置属性的属性是什么,c#,winforms,windows-forms-designer,C#,Winforms,Windows Forms Designer,我一直在用户控件上使用[System.ComponentModel.ReadOnly]来阻止设计器设置属性,但我读到了一些指示 为此,应使用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]。哪个是正确的?如果不是[System.ComponentModel.ReadOnly],什么时候应该使用这个属性?好的,它会这样做,但不是它的意图。[只读(true)]禁止用户在“属性”窗口中修改属性。它仍会显示

我一直在用户控件上使用[System.ComponentModel.ReadOnly]来阻止设计器设置属性,但我读到了一些指示
为此,应使用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]。哪个是正确的?如果不是[System.ComponentModel.ReadOnly],什么时候应该使用这个属性?

好的,它会这样做,但不是它的意图。[只读(true)]禁止用户在“属性”窗口中修改属性。它仍会显示,但会显示为灰色。这实际上有用的可能性很小,我想不出一个好的例子。一种可能的情况是自定义TypeDescriptor,它根据其他属性值动态更改只读状态。但这是火箭科学


您通常使用[Browsable(false)]来阻止属性显示。和DesignerSerializationVisibility.Hidden可阻止代码序列化程序在InitializeComponent()方法中保留一个值,如果用户无法修改该值,则该值不太可能有用。尽管[DefaultValue]通常已经确保了这一点。YMMV.

谢谢,我希望能够在控件/窗体的构造函数中设置我标记的属性,这些控件/窗体承载我标记属性的控件。当我使用ReadOnly时,它似乎会在设计器中导致MethodNotFound异常-这是意料之中的吗?嗯,不。这是一个很容易生成的异常,只需修改控件而不将其从表单中删除即可。我不应该要求我在信息如此之少的情况下猜测这个问题,点击提问按钮。