如何从其中一个事件中引用控件?

时间:2012-07-13 07:57:44

标签: c# winforms

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


    private void panelDown_MouseHover(object sender, EventArgs e)
    {
        **panelDown**.BorderStyle = BorderStyle.FixedSingle;
    }

3 个答案:

答案 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;