Visual Studio 在设计时错误地调用了我的 UserControl 的自定义属性。
我已经阅读了许多关于使用[Browsable( false )]和[DesignerSerializationVisibility( DesignerSerializationVisibility.Hidden )]属性的帖子,但这对我不起作用。
要重现此问题,请使用 Visual Studio 创建一个新的Windows 窗体应用程序,然后将用户控件添加到您的项目,并将该用户控件拖到您的窗体上。将公共自定义属性添加到您的用户控件,如下所示。
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
[Browsable( false )]
[DesignerSerializationVisibility( DesignerSerializationVisibility.Hidden )]
public bool AreYouThere
{
get
{
MessageBox.Show( "Yes I Am Here!" );
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当窗体在 Visual Studio 设计器中打开时,如果我强制解决方案清理然后重建,我将看到一个带有文本“Yes I Am Here!”的 MessageBox,表明 Visual Studio 已经调用了我的用户的AreYouThere属性控制。
这不应该发生,因为我已经使用[ Browsable ( false )]和[DesignerSerializationVisibility( DesignerSerializationVisibility.Hidden )]属性修饰了AreYouThere属性。
知道为什么会这样吗?
(此问题发生在 Visual Studio 2010 和 2013 上)。
为了从每个可能的地方隐藏一个属性,你必须用这些属性标记它
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[Browsable(false)]
Run Code Online (Sandbox Code Playgroud)