我为什么要从设计器中插入非UI的Windows.Forms组件?

时间:2015-09-26 18:46:36

标签: c# winforms windows-forms-designer

在C#(和Visual Basic)中,您可以直接从表单设计器添加几个非UI组件(那些不从System.Windows.Forms.Control继承的组件)。这些组件的示例包括System.Windows.Forms.FolderBrowserDialogSystem.Windows.Forms.Timer

但是,使用UI设计器添加非UI控件而不是直接从代码实例化它们会带来什么好处?这背后有一个理由吗?

1 个答案:

答案 0 :(得分:6)

我认为在设计师中使用非UI组件至少具有以下好处:

设计时支持

Windows窗体中最强大的功能之一是能够使用设计器来设置组件 尽管Timer不是UI组件,但您可以在设计时将其属性设置为interval。这适用于许多其他组件,例如BindingSourceErrorProvider,...您可以使用非常友好的属性网格和类型编辑器和类型转换器来在设计时配置属性。

  • 如果要为其他控件配置依赖属性;例如,通过向设计器添加BindingSource,它可以非常轻松地进行数据绑定。
  • 当您需要使用HelpProviderTooltip等扩展程序提供程序时,由于它们与其他控件相关,因此在设计模式下配置它们非常容易。
  • 当您需要配置DataSourceDataMember等属性时,使用设计器并使用强大的属性网格功能非常友好。
  • 组件将添加为类级别字段,您可以使用deigner将它们公开。
  • 当您需要为您的组件使用Localizable Form功能时,可以使用设计器完全使用它。
  • 当您只需添加或删除事件处理程序时,可以使用属性网格来完成。

标准代码

如果你看看设计师生成的代码,你会看到:

  • 支持ISupportInitialize的组件的生成代码使用其BeginInitEndInit
  • 为组件生成代码,将this.components传递给构造函数,然后在Dispose
  • 时使用它

如果您不需要设计时支持并且编写组件的标准代码,那么在代码中使用主题就完全可以了。