WinForm窗体,所有的控件都必须被加入到this.Controls里面吗,不加有什么问题?

nastik 2015-06-27 10:37:26
以前用windows api编程的时候,创建一个窗体上的"按钮"对象,需要调用系统函数CreateWindow,这个函数其中一个参数就是指定父窗口的句柄。
也就是说,创建了这个控件,它和父窗口之间的联系就建立起来了。

不过感觉C#的模型不太一样,创建了this.button以后,我看IDE为我生成的代码里面还把button加入到了this.Controls.
那么this.Controls这个集合除了保存了所有的控件引用,可以让我枚举以外,它主要是用来做什么呢,换句话说,如果我不把一个控件加入到this.Controls集合里面,那么它就不能显示还是不能响应某些用户输入?
请指教
...全文
298 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2015-06-28
  • 打赏
  • 举报
回复
添加到控件集合可以保证设置正确的父窗口。当然这不是必须的。 另外,只有窗体控件(有句柄的)放在controls里。timer menu等组件不放的。
xuzuning 2015-06-28
  • 打赏
  • 举报
回复
不把窗体控件放到 Controls 集合中,至少在窗体重绘时不会被重绘 如果窗体控件不是全局的,那么你连枚举他的机会都没有
  • 打赏
  • 举报
回复
不过,我给你一个建议:桌面程序开发从WPF学起。 因为将来你发布的系统反正都是要基于.net framework的,你对比同样水平的人用WPF和用WinForm的产品就知道了,这就好像一个人是吃着德芙巧克力长大的、另一个是吃着棉花糖长大的,他们的生活品质的表现有些不一样。 现在很多人是老了、来不及学习WPF了。你并没有这种问题。
  • 打赏
  • 举报
回复
.net 的控件树“不是死的,是活的”。如果你以前在“调用CreateWindow编程时代”写过丰富而灵活的交互界面,窗体中有成千上万的子控件,子控件中还有子控件(例如一个ComboBox或者一个DataGrid,或者一个多层Menu控件),如果你写过,那么你就知道需要维护一个动态的控件树内存数据结构了。 许多只学过一点底层代码的人,只做过死的、静态的、小玩具式的UI系统,不了解这其中的复杂性。那么就需要开始理解、并且遵循.net的UI框架本身的基本设计,而不是去按照以前的那种思路去写UI程序。
  • 打赏
  • 举报
回复
嗯,.net框架的风格是实例化时不指定父控件,你需要自己把子控件放到父控件的Controls里边。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧