【发布时间】:2013-08-12 10:19:05
【问题描述】:
有些人建议只扩展Panel,但我也知道UserControl,这听起来像是我应该扩展以进行自己的控制。
Panel vs. UserControl vs. Control vs. another_alternative
// inheritance depth:
Control
Panel : ScrollableControl : Control
UserControl : ContainerControl : ScrollableControl : Control
我只需要一个矩形来绘制和完整的 WinApi 功能(Handle、WndProc 等)。但我想避免所有可能出现在游戏中的额外内容。我想使用我的自定义控件将它们添加到标准表单中。没有极端行为。
另一方面,UserControl 扩展了 ContainerControl,它可能具有我想要的功能(我不确定)。
我从
Control 继承了一个 OpenGL 框和一些其他简单的控件。到目前为止,他们工作得很好。我没有注意到任何功能损失。 有什么东西反对Control 吗? (如果我不需要任何额外的功能)
【问题讨论】:
-
使用用户控件,在发布问题之前请检查一下,谷歌中的信息非常多,甚至在 youtube 中也有示例,因此您可以查看可以获得的信息
-
为什么继承深度很重要?
-
@joe 仅供参考。
-
对于 WinAPI,您不需要在 window 级别处理所有事情吗?您只需要一个支持键盘焦点的元素(即 any
UIElement),并为执行if (Keyboard.FocusedElement == yourElement) ...的主机窗口设置一个 WndProc
标签: c# winforms user-controls