0

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

我在托盘组件上有一个 Parent 属性,它使用 ISite 的设计器服务将自身设置为表单的实例。它可以很好地序列化,但让我感到困扰的是,即使应用了 Browsable(false) 它也会显示在属性网格中。

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

4

1 回答 1

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;
        }
    }
}
于 2013-09-06T21:02:46.960 回答