Я играю с некоторыми С#, и я кодировал приложение для фортепиано.
Всякий раз, когда пользователь щелкает ноту фортепиано, я сохраняю местоположение звука (.wav) в списке... ниже приведен некоторый код в методе button1_MouseDown.
if (e.Button == MouseButtons.Left)
{
SoundPlayer sp = new SoundPlayer();
string musName = Convert.ToString(mk.pitch);
string loc = @"D:\OneDrive\Year 2 Semester 1\OOP\Notes-Sound files\Notes-Sound files\mapped\" + musName + ".wav";
sp.SoundLocation = loc;
sp.Play();
music.Add(loc);
}
Теперь я хочу пройти цикл, чтобы воспроизвести все нажатые клавиши за один раз. Я делаю это следующим образом (когда пользователь нажимает кнопку воспроизведения)
int k = 0;
for (k = 1; k < music.Count; k++)
{
SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = music[k];
sp.Play();
}
Дело в том, что всякий раз, когда нажимается кнопка воспроизведения, воспроизводится только последняя нажатая нота. Однако, когда я каким-то образом отлаживаю, воспроизводятся все ноты. Любые идеи?