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

aha*_*zah 8 c# winforms

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 上)。

Mih*_*kov 6

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

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Never)]
[Bindable(false)]
[Browsable(false)]
Run Code Online (Sandbox Code Playgroud)