Я занимаюсь разработкой фортепиано на 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) нажимается второй раз, событие mk.MouseUp выполняется дважды для нажатия этой единственной клавиши. Аналогичным образом, если та же клавиша нажимается в пятый раз (не обязательно последовательно), событие mk.MouseUp выполняется пять раз для нажатия этой единственной клавиши.
Я хочу выполнить цикл foreach НЕ для каждого MusKey mk, а для каждого события MouseDown. Я не хочу, чтобы программа «запоминала», какая кнопка MusKey mk была нажата.
Как я могу это сделать?