.net 如何将属性隐藏到表单设计器文件中?

.net 如何将属性隐藏到表单设计器文件中?,.net,vb.net,visual-studio,winforms,properties,.net,Vb.net,Visual Studio,Winforms,Properties,我在VB.NET2010框架2.0中工作 我不想允许某些属性进入表单的设计器文件,但这些属性将显示在表单上(属性网格)。这些属性的行为将始终相同 我使用了以下代码: <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> Public Property GradientBegin() As Color = Color.Red 公共属性GradientBegin()为Color=Color

我在VB.NET2010框架2.0中工作

我不想允许某些属性进入表单的设计器文件,但这些属性将显示在表单上(属性网格)。这些属性的行为将始终相同

我使用了以下代码:

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
Public Property GradientBegin() As Color = Color.Red 

公共属性GradientBegin()为Color=Color.Red
但我面临的问题是,在将“GradientBegin”颜色更改为非红色并编译程序后,属性网格上的->会再次将新更改的值替换为红色。所以我实际上不能改变颜色

我怎样才能做到这一点


谢谢您提前回复。

据我所知,您要求的是两件完全矛盾的事情。

DesignerSerializationVisibility
属性设置为“隐藏”将阻止设计器保存有关如何设置这些属性的任何信息。将始终使用其默认值,因为不存储自定义设置

因此,当您将
GradientBegin
属性更改为红色以外的颜色时,该设置不会保存到表单的设计器文件中。这就是为什么无论发生什么情况,在编译和运行程序时,
GradientBegin
属性都会更改回其默认值
Color.Red
。(为了防止您不确定默认值来自何处,这是您在声明属性时设置的值:
Public property GradientBegin()为Color=Color.Red

因此,您必须决定实际需要的行为。您是否希望设计器以在设计时设置属性的方式保存(序列化)?如果是这样,则需要从属性声明中删除
DesignerSerializationVisibility
属性。否则,如果要保留该属性,则必须使用该属性的默认值,因为这是程序运行时唯一知道的。唯一的另一个选项是在代码中显式设置
GradientBegin
属性,而不是让设计器来完成。这意味着您无法在设计时使用“属性”窗口进行设置,但它确实允许您保留
DesignerSerializationVisibility
属性,并覆盖属性的默认值。

如果应用
,则不会保存对属性网格上该属性所做的任何更改。保存在设计器中所做更改的唯一方法是允许将其放入设计器文件中

如果不希望设计器从属性网格保存该属性,则需要使用代码设置该属性

如果您的问题是您正在从代码中设置属性,但它仍然会变回红色,这是因为设计器在应用属性之前序列化了它,并且它仍然在设计器文件中。在这种情况下,您需要进入ClassName.designer.vb文件并删除将颜色设置为红色的剩余行。只要具有DesignerSerializationVisibility属性,它就不会重新出现