C# 仅检测控制高度的变化
是否有一种方法可以检测何时只更改控件的高度,而不使用变量保存以前的控件高度?我有一些代码,我只想在控件的高度改变时执行,但即使宽度改变,SizeChanged事件也会被触发 不使用变量保存以前的控制高度 您可以使用单个变量,只需使用字典即可。试试这个例子:C# 仅检测控制高度的变化,c#,winforms,C#,Winforms,是否有一种方法可以检测何时只更改控件的高度,而不使用变量保存以前的控件高度?我有一些代码,我只想在控件的高度改变时执行,但即使宽度改变,SizeChanged事件也会被触发 不使用变量保存以前的控制高度 您可以使用单个变量,只需使用字典即可。试试这个例子: public partial class Form1 : Form { private Dictionary<Control, int> heights = new Dictionary<Control, int&g
public partial class Form1 : Form
{
private Dictionary<Control, int> heights = new Dictionary<Control, int>();
public Form1()
{
InitializeComponent();
foreach (Control control in Controls)
{
heights.Add(control, control.Height);
}
}
private void button1_Resize(object sender, System.EventArgs e)
{
var control = (Control) sender;
var oldHeight = heights[control];
if (control.Height != oldHeight)
{
heights[control] = control.Height;
// handle your resize
}
}
}
公共部分类表单1:表单
{
私有字典高度=新字典();
公共表格1()
{
初始化组件();
foreach(控件中的控件)
{
添加(控制,控制.高度);
}
}
私有无效按钮1\u调整大小(对象发送方,System.EventArgs e)
{
变量控制=(控制)发送方;
var oldHeight=高度[控制];
如果(control.Height!=oldHeight)
{
高度[控制]=控制高度;
//处理您的大小调整
}
}
}
缓存旧高度值时,您不喜欢什么?比如使用变量存储以前的高度?+1对于解决方案,我建议只存储控件名,而不是将control
添加到字典heights.Add(control.name,control.height)代码>谢谢您的解决方案。我正在用字典编写一些非常相似的代码。我想没有办法使用variable@H.Tran您不想使用变量或集合有什么具体原因吗?@Kurubaran您能提供一个我的方法存在问题的示例吗?@Kurubaran没有原因..只是想看看是否有更干净的选项