winforms 何时添加组件类与何时添加用户控件?

yqkkidmi  于 2022-11-17  发布在  其他
关注(0)|答案(4)|浏览(140)

我有一个大致的想法,而且有一些明显的案例,但对我来说也有一些灰色区域-何时最适合使用从元件扩充,以及何时最适合建立使用者控件?这与我尝试解决的特定工作问题有关,但其细节并不重要-对我来说,这个问题的一般答案就足够了。

edqdpe6u

edqdpe6u1#

在WPF和Windows窗体中,主要区别在于UserControl是一个控件集合,即由多个控件本身“组成”的可重用的单个对象。
如果您要制作具有新行为的单一基本控件,而不是制作由较小控件组成的“控件”,则应该实作Component/CustomControl/Control,而不是UserControl。
组件通常是一个非可视行为,其中CustomControl/Control通常是一个可视控件。

bxfogqkk

bxfogqkk2#

组分和对照品之间存在一个显著差异:控件具有用户界面。所有控件也都是组件,但并非所有组件都是控件。如果需要显示用户界面,通常需要从某种控件基(Control、UserControl、Form等)派生。如果只有行为,例如BackgroundWorker组件,则只需直接从组件派生。
另一个注意事项...组件和控件都可以拖放到设计图面上。组件在特殊区域中显示为图标和标签,控件直接显示在设计图面上。但是,还有第三种方法可以用途:一个简单的类。如果你不需要设计图面支持,我建议你使用一个简单的类,而不是Component或Control。当你需要的是100%纯行为而没有设计时支持时,它们的重量更轻,也不那么臃肿。

wribegjk

wribegjk3#

通常,当控件没有任何用户界面(或者至少表单上没有)时,我会使用Component。如果它是一个UI控件,我会创建一个User Control

ujv3wf0j

ujv3wf0j4#

我通常只在需要打包一些UI功能时才扩展Control,或者更频繁地扩展UserControl。对于组件,我想到了经典的示例,Timer。它可以拖放到设计器上,通过Properties窗格进行配置,然后通过后台代码以编程方式访问。简而言之,当我希望能够操作一些捆绑的状态透过设计工具。

相关问题