不同的事件使用相同的代码

本文关键字:代码 事件 | 更新日期: 2023-09-27 18:01:37

我有两个事件:

this.lblSettings.MouseEnter += new System.EventHandler(this.HookEvent);
this.lblSettings.MouseLeave += new System.EventHandler(this.HookEvent);

他们称之为Method:

    private void HookEvent(object sender, EventArgs e)
    {
        try
        {
            string method = System.Reflection.MethodBase.GetCurrentMethod().Name;
            Label label;
            if (sender is Label)
            {
                //Get the event. eg: MouseEnter, MouseLeave
                label = (Label)sender;
                label.BackColor = Color.FromArgb(30, 30, 30);
            }
            else if (sender is PictureBox)
            {
                PictureBox picBox;
                picBox = (PictureBox)sender;
                Control control = picBox.Parent;
                if (control is Panel)
                {
                    foreach (Control ctrl in control.Controls)
                    {
                        if (ctrl is Label)
                        {
                            label = (Label)ctrl;
                            label.BackColor = Color.FromArgb(30, 30, 30);
                            break;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            throw;
        }
    }

在LABEL部分,我有注释:"//获取事件。例如:MouseEnter, Mouseleave",

我想看看这是正在执行的MouseEnter事件还是MouseLeave事件,因为我想为每个事件做不同的事情

不同的事件使用相同的代码

不可能,因为这些事件不使用EventArgs子类。

编辑:

你当然可以创建一个new StackTrace()对象并检查frames方法名来查看它是哪个事件:)