是否有一種更簡單的方法來獲取'panelDown'對象,以便在所有控件中使用相同的代碼?如何從其中一個事件引用控件?
private void panelDown_MouseHover(object sender, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; }
是否有一種更簡單的方法來獲取'panelDown'對象,以便在所有控件中使用相同的代碼?如何從其中一個事件引用控件?
private void panelDown_MouseHover(object sender, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; }
,而不是尼科曾建議使用方式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 };
private void panelDown_MouseHover(object sender, EventArgs e)
{
(sender as Panel).BorderStyle = BorderStyle.FixedSingle;
}
投sender
您的控制(可能是面板)。
((Panel) sender).BorderStyle = BorderStyle.FixedSingle;
認爲這將是什麼簡單而容易:)感謝您的回答! – 2012-07-13 08:09:36