Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从控件的某个事件引用该控件?_C#_Winforms - Fatal编程技术网

C# 如何从控件的某个事件引用该控件?

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

是否有更简单的方法获取“panelDown”对象,以便在所有控件中使用相同的代码

private void panelDown_MouseHover(object sender, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; } private void panelDown_鼠标悬停(对象发送方,事件参数e) { **panelDown**.BorderStyle=BorderStyle.FixedSingle; }
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 };