DesignerSerializationVisibility(内容)可浏览(false)

时间:2013-09-06 16:41:32

标签: winforms windows-forms-designer

是否可以将属性完全隐藏在属性网格中但仍由设计者序列化?

我在托盘组件上有一个Parent属性,它使用ISite的设计器服务将自己设置为表单的实例。它被序列化很好,但它让我觉得它显示在属性网格中,即使应用了Browsable(false)。

是否有自定义设计器甚至是自定义代码生成选项?

1 个答案:

答案 0 :(得分:1)

目前还不清楚为什么你需要解决这个问题,但我们没有什么可看的。此示例组件当然不会在“属性”窗口中显示主机:

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms;

public partial class Component1 : Component {
    private ContainerControl parent;

    [Browsable(false)]
    public ContainerControl ContainerControl {
        get { return parent; }
        set { parent = value; } 
    }

    public override ISite Site {
        set {
            // Runs at design time, ensures designer initializes ContainerControl
            base.Site = value;
            if (value == null) return;
            IDesignerHost service = value.GetService(typeof(IDesignerHost)) as IDesignerHost;
            if (service == null) return;
            IComponent rootComponent = service.RootComponent;
            this.ContainerControl = rootComponent as ContainerControl;
        }
    }
}