c# - 为什么winform用户控件调整大小事件是触发事件没有任何调整大小命令
问题描述
重复我的问题:
- 添加一个新的用户控件。
在构造函数中添加跟随方法并注册到 Resize 事件。
Resize += new EventHandler(AutoResize); private void UserControl2_Resize(object sender, EventArgs e) { MessageBox.Show($"{Width}:{Height}"); }
重建并将此用户控件添加到 winform。而且我发现这个方法在每次加载 winform 时都会调用。
- 如果我在 Onload 事件中将此方法注册为 Resize,那么除非我真正调整它的大小,否则该方法永远不会调用。
解决方案
考虑以下事实:
- 该
Rezize
事件UserControl
将在发生Size
变化时发生。 - 的
Load
事件UserControl
将在控件的句柄创建时发生。 当您将控件放在窗体上时,将为该控件生成以下代码:
// // userControl11 // this.userControl11.Location = new System.Drawing.Point(0, 0); this.userControl11.Name = "userControl11"; this.userControl11.Size = new System.Drawing.Size(150, 150); this.userControl11.TabIndex = 0;
在这一行
this.userControl11.Size = new System.Drawing.Size(150, 150);
事件Load
尚未引发,但构造函数已被执行。
Resize
考虑到事实,当您在构造函数中订阅事件时,this.userControl11.Size = ...
将引发该Resize
事件,该事件将由您的事件处理程序处理。
但是当您订阅控件Resize
的Load
事件时,初始调整大小将不会由您的事件处理程序处理,因为您还没有订阅该Resize
事件,因为尚未创建控件。
推荐阅读
- mysql - 汇总列中的所有值,尽管它们被另一列的 WHERE 条件排除
- python - 熊猫:AttributeError:“系列”对象没有属性“样式”
- node.js - 嵌套数组中的猫鼬更新对象
- python - NOT NULL 约束失败:blog_userpost.user_id
- powershell - Powershell Format-Table 仍然导致列表,无法以表格形式获取
- swift - swift SpriteNode 和 SceneKit 多点触控手势
- pandas - 关键错误,使用 *.agg 方法解析错误
- django - 如何将 PhoneNumberField 数据保存到数据库?
- libgit2 - 如何在 libgit2 中设置结帐策略?
- react-native - Metro Bundler 中的错误:'AsyncStorage 已从 react-native 核心中提取,将被删除......'