我想在 Component
中实现属性 Name
,该属性与表单中指向该组件的字段名称具有相同的值。
private MyComponent myComponent1;
this.myComponent1.Name = "myComponent1";
WinForms 已经在 Control
类中实现了这样的属性,但我无法理解它是如何工作的。
private System.Windows.Forms.Button button1;
this.button1.Name = "button1";
我考虑在 MyComponentDesigner 中声明私有(private)字符串 Name 属性。 或者使用 IComponentChangeService 服务中的 ComponentRename 事件。 探索WinForms的源代码并没有给出确切的解释。
最佳答案
如果您只想在属性网格中显示一个简单的 Name
属性,那么向您的组件添加一个简单的自动 get-set Name
属性就足够了。但是,如果您希望组件具有 Name
属性,并且 (Name)
属性就像控件的 (Name)
属性一样,请添加 Name
属性是这样的:
string name;
[Browsable(false)]
public string Name
{
get
{
if (Site != null)
name = Site.Name;
return name;
}
set
{
if (Site != null)
Site.Name = value;
name = value;
}
}
这样,您就可以使用代码或在属性网格中获取或设置 Name
属性。在属性网格中,当您为 (Name)
分配值时,它将分配 Name
属性,并且设计器也会生成组件名称分配。
关于C# WinForms。在组件中实现属性 "Name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46260446/