Visual Studio在设计时错误地调用了我的UserControl的自定义属性。
我已经阅读了许多有关使用 [Browsable (false)] 和 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 属性的帖子,但这对我没有起作用。
要复现此问题,请使用 Visual Studio 创建一个新的 Windows Forms 应用程序,然后将一个 User Control 添加到您的项目中,并将该 User Control 拖放到您的窗体上。如下所示,在您的User Control 中添加一个 公共自定义属性。
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设计器中打开表单时,如果我强制清理并重新构建解决方案,我会看到一个带有文本“是的我在这里!”的消息框,表示Visual Studio已调用我的用户控件上的AreYouThere属性。
这不应该发生,因为我已经使用[Browsable(false)]和[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]属性装饰了AreYouThere属性。
有什么想法为什么会发生这种情况吗?
(此问题出现在Visual Studio 2010和2013中)。