Visual Studio在设计时错误地调用了UserControl的自定义属性。
我已经阅读了许多关于使用 [可浏览(错误)] 和 [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;
}
}
}
当在Visual Studio设计器中打开表单时,如果我强制解决方案清理然后重建,我将看到一个MessageBox,其中包含文本"是的我在这里!",表明Visual Studio已在我的用户控件上调用 AreYouThere 属性。
这不应该发生,因为我用 [可浏览(错误)] 和 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] <装饰 AreYouThere 属性/ strong> attributes。
知道为什么会这样吗?
(在Visual Studio 2010和2013上会出现此问题)。
答案 0 :(得分:1)
为了从可能的每个地方隐藏属性,您必须使用这些属性标记
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[Browsable(false)]