是否有更简单的方法来获取“panelDown”对象,以便在所有控件中使用相同的代码?
私人无效panelDown_MouseHover(对象发送者,EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; }
而不as
是以尼科建议的方式使用,我会投:
private void panelDown_MouseHover(object sender, EventArgs e)
{
var panel = (Panel) sender;
panel.BorderStyle = BorderStyle.FixedSingle;
}
当您无条件转换时,最好使用强制转换,就好像您输入了错误的类型一样,抛出的异常 ( ClassCastException
) 比使用错误输入NullReferenceException
的结果时获得 a 更清晰。as
(当然,您不必在这里使用两个语句 - 我只是觉得它更清楚。)
当输入是不同类型有效时使用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;