C# 如何从控件的某个事件引用该控件?
是否有更简单的方法获取“panelDown”对象,以便在所有控件中使用相同的代码 private void panelDown_MouseHover(object sender, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; } private void panelDown_鼠标悬停(对象发送方,事件参数e) { **panelDown**.BorderStyle=BorderStyle.FixedSingle; }C# 如何从控件的某个事件引用该控件?,c#,winforms,C#,Winforms,是否有更简单的方法获取“panelDown”对象,以便在所有控件中使用相同的代码 private void panelDown_MouseHover(object sender, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; } private void panelDown_鼠标悬停(对象发送方,事件参数e) { **panelDown**.BorderStyle=Borde
将
sender
投射到您的控件(可能是面板)
我不会像尼科建议的那样使用
作为
,而是:
private void panelDown_MouseHover(object sender, EventArgs e)
{
var panel = (Panel) sender;
panel.BorderStyle = BorderStyle.FixedSingle;
}
当您无条件转换时,使用强制转换更可取,因为如果您的类型错误,则抛出的异常(ClassCastException
)比在错误输入下使用as
的结果时获得NullReferenceException
要清晰得多
(当然,你不必在这里使用两种说法——我只是觉得更清楚而已。)
如果输入的类型不同,则可以将用作
,如果输入的类型正确,则可以有条件地采取行动
如果手动连接事件处理程序,则可以使用lambda表达式捕获相关变量,当然:
foo.MouseHover += (sender, args) => foo.BorderStyle = BorderStyle.FixedSingle;
或:
我想这将是一件简单易行的事情:)谢谢你的回答!
private void panelDown_MouseHover(object sender, EventArgs e)
{
var panel = (Panel) sender;
panel.BorderStyle = BorderStyle.FixedSingle;
}
foo.MouseHover += (sender, args) => foo.BorderStyle = BorderStyle.FixedSingle;
foo.MouseHover += delegate { foo.BorderStyle = BorderStyle.FixedSingle };