Я занимаюсь разработкой фортепиано на C#.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 NOT для каждого MusKey mk, но для каждого события MouseDown. Я не хочу, чтобы программа «помнила», который был нажат MusKey mk.
Как я могу это сделать?
Спасибо очень очень очень очень много :) :):) Проблема решена благодаря вашей помощи :) – Clayton
@ Clayton - не проблема, удачи в вашей фортепианной программе (пианист уже более 20 лет). –
Спасибо большое :) Все самое лучшее для праздничного сезона :) – Clayton