C# Foreach Statement



我正在用c#开发一架钢琴。

我的程序中有如下一段代码:

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
    mn1 = new MusicNote();
    foreach (MusKey mk in this.panel2.Controls)
    {
        if (sender == mk)
        {
            //code
            mk.MouseUp += new MouseEventHandler(this.panel1_MouseUp);   
        }
    }
}

此事件的作用是创建一个音符,并在用户释放鼠标按钮时调用MouseUp事件处理程序。

我的问题是,如果第二次按下相同的音乐键(MusKey),则mark . mouseup事件将为该单键按两次执行。同样地,如果同一键被按第五次(不一定是连续的),mark . mouseup事件将为该键被执行五次。

我想做的是执行foreach循环不是为每个MusKey mk,而是为每个MouseDown事件。我不希望程序"记住"按下了哪个键。

我该怎么做?

每次按下鼠标时都将事件连接起来。在不同的位置分配一次事件处理程序(如Load事件)。

在应用程序启动时,以保证它们只触发一次的方式连接所有键的所有MouseUp事件,我认为没有任何危害。

如果您正在做一些更复杂的事情,您将需要评估事件处理程序是否已经连接到所讨论的事件。

为什么在MouseDown事件中使用它!当鼠标按下

时,向MusKey添加第二个MouseEventHandler

你必须为所有的加载窗口底部设置MouseEventHandler

i wish this help

相关内容

  • 没有找到相关文章

最新更新