2017-08-04 105 views
0

有没有办法检测何时只有控制器的高度发生变化而不使用变量来保存先前的控制高度?我有我想要执行的代码,只有当控件的高度改变了,但即使改变了宽度时也会触发SizeChanged事件。仅检测控制高度的变化

+3

你不喜欢缓存旧的身高值? –

+0

像使用变量来存储以前的高度? –

回答

1

没有使用变量来保存以前的控制高度?

您可以使用单个变量,只需使用字典即可​​。试试这个例子:

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 
     } 
    } 
} 
+0

+1为解决方案,我会建议存储只是控制名称,而不是添加'控制'字典'heights.Add(control.Name,control.Height);' – Kurubaran

+0

感谢您的解决方案。我正在使用Dictionary来编写非常类似的东西。我想有没有办法使用变量 –

+1

@ H.Tran你有什么具体的原因,你不想使用变量或集合? – Kurubaran