是否可以将属性完全隐藏在属性网格中但仍由设计者序列化?
我在托盘组件上有一个Parent属性,它使用ISite的设计器服务将自己设置为表单的实例。它被序列化很好,但它让我觉得它显示在属性网格中,即使应用了Browsable(false)。
是否有自定义设计器甚至是自定义代码生成选项?
答案 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;
}
}
}