是否可以将属性完全隐藏在属性网格中,但仍由设计师进行序列化?
我在托盘组件上有一个 Parent 属性,它使用 ISite 的设计器服务将自身设置为表单的实例。它可以很好地序列化,但让我感到困扰的是,即使应用了 Browsable(false) 它也会显示在属性网格中。
是否有自定义设计器甚至自定义代码生成选项?
是否可以将属性完全隐藏在属性网格中,但仍由设计师进行序列化?
我在托盘组件上有一个 Parent 属性,它使用 ISite 的设计器服务将自身设置为表单的实例。它可以很好地序列化,但让我感到困扰的是,即使应用了 Browsable(false) 它也会显示在属性网格中。
是否有自定义设计器甚至自定义代码生成选项?
目前尚不清楚您为什么需要解决该问题,但我们没有什么可看的。这个示例组件当然不会在“属性”窗口中显示主机:
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;
}
}
}