2017-08-04 83 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