从VS设计器隐藏WinForm UserControl自定义属性

时间:2014-06-13 20:22:31

标签: c# winforms

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上会出现此问题)。

1 个答案:

答案 0 :(得分:1)

为了从可能的每个地方隐藏属性,您必须使用这些属性标记

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[Browsable(false)]