【问题标题】:MouseEnter & MouseLeave objectnameMouseEnter & MouseLeave 对象名
【发布时间】:2011-11-03 19:49:07
【问题描述】:

我想将 MouseOverMouseLeave 事件添加到 flowLayoutPanel 中动态创建的面板。

我将所有面板添加到名为“panels”的列表中,并且可以通过“panels[index]”访问它们。

现在我想为每个面板动态添加一个MouseOverMouseLeave 事件。 我认为可以获取鼠标结束的面板名称,并为每个事件仅使用一种方法,并使用其面板名称(panel.Name)识别鼠标所在的面板,但我在“发件人”中一无所获。

有没有办法做到这一点?

我的代码:

//Method
private void PanelsMouseEnter(object sender, EventArgs e)
{
    var panel = sender as Control;
    foreach (Control control in this.fLpKoerper.Controls)
    {
        if (control.Name == panel.Name)
        {
            foreach (Panel panels in panelsKoerper)
            {
                if (panels.Name == panel.Name)
                    panels.BackColor = Color.DarkGray;
            }
        }
    }  
}

//Event
panelsKoerper[y].MouseEnter += PanelsMouseEnter;

【问题讨论】:

  • 一些示例代码在这里会有所帮助。

标签: c# winforms mouseevent mouseenter


【解决方案1】:
var panel = sender as Control;
var thePanelName = panel.Name;

【讨论】:

    【解决方案2】:

    我相信您可以为控件生成一个鼠标悬停事件,复制该事件方法名称,然后将其粘贴到另一个控件的鼠标悬停事件框中,这样应该可以工作

    所以你会有这个活动

    private void label1_MouseHover(object sender, EventArgs e)
    {
        //Code...
    }
    

    然后你可以将'label1_MouseHover'放在任何控件的鼠标悬停事件中

    【讨论】:

    • 也谢谢你。这是我之前的另一个想法,但由于面板的数量来自 dll 的锯齿状数组,它们是在运行时创建的。
    猜你喜欢
    • 2023-03-14
    • 2019-04-26
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    相关资源
    最近更新 更多