关于 c#:Specialized Textbox 在设计时填充属性窗口中的特定类型?

Specialized Textbox to populate specific types in property window during design time?

这是问题的背景。

我们有自己的 ORM 框架来开发 .net 应用程序。现在我们正在尝试创建专门的 UI 对象以与 ORM 紧密合作。我们创建了一个名为 IBindable 的接口,它在所有 UI 控件上实现。我们从 asp.net 的文本框 webcontrol 开始。首先,我们创建了派生自 System.Web.UI.WebControls.TextBox 的 TextBox 类,该类也实现了 IBindable 接口。

IBindable 负责为 ORM 保存键绑定信息。

  • 实体类型
  • 实体字段
  • EntityType 是 ORM 中业务对象的类型,EntityField 是 EntityType 业务对象的特定属性,它将在运行时绑定到。

    现在真正的问题是,

    在设计期间,我们希望为 TextBox 的属性窗口中的文本框属性 EntityType 填充项目中所有可用的业务对象。在用户选择给定的实体类型后,我们需要为相应的 EntityField 属性填充所选 EntityType 的属性。

    Please note that all our business
    objects or Entity objects derive from
    EntityBase abstract class.


    基本上,您希望将编辑器附加到您的属性。在您的自定义文本框中,您可以使用 EditorAttribute:

    将编辑器分配给您的属性

    1
    2
    [Editor(typeof(EntityTypeChooser), typeof(System.Drawing.Design.UITypeEditor))]
    public property EntityType { ... }

    当然,你必须实现你的 EntityTypeChooser:你从 UITypeEditor 继承并覆盖 EditValue 方法。

    示例:

    • http://msdn.microsoft.com/en-us/library/system.drawing.design.uitypeeditor.aspx
    • http://www.codeproject.com/KB/dotnet/Property_Editor.aspx