有没有更简单的方法来获取'panelDown'对象,以便在所有控件中使用相同的代码?
private void panelDown_MouseHover(object sender, EventArgs e)
{
**panelDown**.BorderStyle = BorderStyle.FixedSingle;
}
我没有as按照Nico建议的方式使用,而是投下:
private void panelDown_MouseHover(object sender, EventArgs e)
{
var panel = (Panel) sender;
panel.BorderStyle = BorderStyle.FixedSingle;
}
Run Code Online (Sandbox Code Playgroud)
当你无条件地转换时,使用强制转换是可取的,就好像你有错误的类型一样,抛出异常(ClassCastException)比NullReferenceException使用as错误输入的结果时更加清晰.
(你不必须在这里使用两个语句,当然-我只是觉得它更清晰)
as当输入对于不同类型有效时使用,如果它是正确的类型,您将有条件地采取行动.
如果您手动连接事件处理程序,则可以使用lambda表达式捕获相关变量,当然:
foo.MouseHover += (sender, args) => foo.BorderStyle = BorderStyle.FixedSingle;
Run Code Online (Sandbox Code Playgroud)
要么:
foo.MouseHover += delegate { foo.BorderStyle = BorderStyle.FixedSingle };
Run Code Online (Sandbox Code Playgroud)