gpt4 book ai didi

c# - 为什么我应该从设计器中插入一个非 UI Windows.Forms 组件?

转载 作者:太空狗 更新时间:2023-10-29 23:06:29 24 4
gpt4 key购买 nike

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

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

最佳答案

如果您不需要设计时支持,并且您自己会负责编写标准代码来初始化和处置组件,那么您不需要将组件放在设计器上。

在设计器中使用非 UI 组件有以下好处:

  • 设计时支持
  • 标准代码(用于初始化和处置)

设计时支持

Windows 窗体中最强大的功能之一是能够使用设计器设置组件属性。

尽管 Timer 不是一个 UI 组件,但您可以在设计时设置它的属性,如时间间隔。这适用于许多其他组件,如 BindingSourceErrorProvider 等,您可以使用非常友好的属性网格和类型编辑器以及类型转换器在设计时配置属性。

  • 当你想为其他控件配置依赖属性时;例如在设计器中添加BindingSource,可以让数据绑定(bind)变得非常简单。
  • 当您需要使用 HelpProviderTooltip 等扩展程序提供程序时,由于它们与其他控件相关,因此在设计模式下配置它们非常容易。<
  • 当您需要配置DataSourceDataMember 等属性时,使用设计器非常友好,并使用强大的属性网格功能。
  • 组件将添加为类级别的字段,您可以使用 deigner 将它们公开。
  • 当您需要为您的组件使用 FormLocalizable 功能时,使用设计器完全可用。
  • 当您需要简单地添加或删除事件处理程序时,您可以使用属性网格来完成。

标准代码

如果您查看设计器生成的代码,您将看到:

  • 为支持 ISupportInitialize 的组件生成的代码使用它们的 BeginInitEndInit
  • 生成组件代码,将this.components传给constructor,然后在Dispose时使用

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

关于c# - 为什么我应该从设计器中插入一个非 UI Windows.Forms 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32800751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com