是否有更简单的方法来获取'panelDown'对象,以便在所有控件中使用相同的代码?
private void panelDown_MouseHover(object sender, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; }
答案 0 :(得分:5)
而不是像Nico建议的那样使用as
,我会演员:
private void panelDown_MouseHover(object sender, EventArgs e)
{
var panel = (Panel) sender;
panel.BorderStyle = BorderStyle.FixedSingle;
}
当你无条件地转换 时,使用强制转换是可取的,就好像你的类型错误一样,抛出的异常(ClassCastException
)比获得{{}更清晰1}}当您使用错误输入的NullReferenceException
的结果时。
(你不 在这里使用两个语句,当然 - 我只是觉得它更清楚。)
如果有效,请使用as
输入为不同的类型,如果是正确的类型,您将有条件采取行动。< / p>
如果您手动连接事件处理程序,则可以使用lambda表达式捕获相关变量,当然:
as
或者:
foo.MouseHover += (sender, args) => foo.BorderStyle = BorderStyle.FixedSingle;
答案 1 :(得分:1)
private void panelDown_MouseHover(object sender, EventArgs e)
{
(sender as Panel).BorderStyle = BorderStyle.FixedSingle;
}
答案 2 :(得分:1)
将sender
投射到您的控件(可能是Panel)。
((Panel) sender).BorderStyle = BorderStyle.FixedSingle;