2012-07-13 24 views

回答

5

,而不是尼科曾建議使用方式as,我會投:

private void panelDown_MouseHover(object sender, EventArgs e) 
{ 
    var panel = (Panel) sender; 
    panel.BorderStyle = BorderStyle.FixedSingle; 
} 

當你轉換無條件,使用強制是preferrable因爲如果你已經得到了錯誤的類型,拋出的異常(ClassCastException)比使用as的結果輸入錯誤時得到NullReferenceException要清晰得多。

(你不在這裏使用兩個語句,當然 - 我只是覺得它更清晰)

使用as當它是有效的輸入是不同類型的,並你會有條件地如果它是正確的類型採取行動。

如果手動佈線事件處理程序,可以捕捉到相關變量,而不是使用lambda表達式,當然:

foo.MouseHover += (sender, args) => foo.BorderStyle = BorderStyle.FixedSingle; 

或者:

foo.MouseHover += delegate { foo.BorderStyle = BorderStyle.FixedSingle }; 
+0

認爲這將是什麼簡單而容易:)感謝您的回答! – 2012-07-13 08:09:36

1
private void panelDown_MouseHover(object sender, EventArgs e) 
{ 
    (sender as Panel).BorderStyle = BorderStyle.FixedSingle; 
} 
1

sender您的控制(可能是面板)。

((Panel) sender).BorderStyle = BorderStyle.FixedSingle; 
相關問題