Winforms 如果面板可见,是否使用委托触发事件?

Winforms 如果面板可见,是否使用委托触发事件?,winforms,events,delegates,panel,Winforms,Events,Delegates,Panel,我试图找出使用委托的理由,据我所知,委托基本上代表了事件的意义 我本应该在Windows窗体中进行的活动。我有一个开始不可见的面板,但当它变得可见时,背景中的所有内容都将被禁用(弹出窗口) 我可以这样做,任何使面板可见的东西也会导致所有东西都被禁用,就像我通常做的那样。但是我可以设置一个委托或事件,这样每当该面板可见时,它就会调用一个禁用所有内容的方法吗 我就是不知道如何与代表一起解决这个问题。怎么样: panel.VisibleChanged += (sender, args) => {

我试图找出使用委托的理由,据我所知,委托基本上代表了事件的意义

我本应该在Windows窗体中进行的活动。我有一个开始不可见的面板,但当它变得可见时,背景中的所有内容都将被禁用(弹出窗口)

我可以这样做,任何使面板可见的东西也会导致所有东西都被禁用,就像我通常做的那样。但是我可以设置一个委托或事件,这样每当该面板可见时,它就会调用一个禁用所有内容的方法吗

我就是不知道如何与代表一起解决这个问题。

怎么样:

panel.VisibleChanged += (sender, args) =>
{
    if (panel.Visible) // Just become visible
    {
        // Disable everything else
    }
};

System.Windows.Forms.Control
s(包括面板)具有可绑定到的VisibleChanged事件。所以

myPanel.VisibleChanged += OnMyPanelVisibleChanged;
或内联:

myPanel.VisibleChanged += (sender, e) => this.Enabled = myPanel.Visible;

所有
控件
都有
VisibleChanged
从第一个开始,我会有一个名为OnMyPanelVisibleChanged()的方法?是的。这需要两个参数(objectsender,EventArgs e)我来试一试,看起来不错。这会被认为是一个事件吗?或者你把这种过程称为什么?@Johnny:这是在VisibleChanged事件上附加一个处理程序。