Я пытаюсь добавить несколько фотографий (используя PictureBox) музыкальных заметок в форму Music Staff.
При определенном событии мыши (MouseUp) создается музыкальная заметка, и музыкальная заметка должна появляться на экране. Однако, только когда первая заметка создана, изображение появляется на экране. Для каждой другой заметки, созданной после первой, изображение не отображается.
В следующем методе создается музыкальная нота:
private void Key_MouseUp(object sender, MouseEventArgs e)
{
foreach (MusKey mk in panel1.Controls)
{
if (sender == mk) //true for the specific key pressed on the Music Keyboard
{
if (e.Button == MouseButtons.Left)
{
timer1.Enabled = false;
sp.Stop();
string bNoteShape = null;
// ticks -> milliseconds
if (count >= 16)
{
bNoteShape = "SemiBreve";
duration = 1024;
}
else if (count >= 8 && count <= 15)
{
bNoteShape = "DotMinim";
duration = 768;
}
else if (count >= 4 && count <= 7)
{
bNoteShape = "Crotchet";
duration = 384;
}
else if (count >= 2 && count <= 3)
{
bNoteShape = "Quaver";
duration = 128;
}
else
{
bNoteShape = "Semi-Quaver";
duration = 90; //63 is too short
}
MusicNote mn = new MusicNote(mk.getMusicNote(), duration, bNoteShape, mk.getNote());
Notes.Add(mn);
mn.picturebox1.Location = new Point(xLoc1, yLoc1);
panel2.Controls.Add(mn.picturebox1); //adding MusicNote component to MusicStaff (panel2) collection
}
}
}
}
При создании заметки она отправляется в конструктор MusicNote:
public MusicNote(int iNotepitch, int iDuration, String iBnoteShape, String iNote)
{
notepitch = iNotepitch;
noteduration = iDuration;
noteshape = iBnoteShape;
note = iNote;
picturebox1.ImageLocation = NoteImage_path + noteshape + ".bmp";
picturebox1.BackColor = Color.Transparent;
picturebox1.Location = new Point(xLoc, yLoc);
xLoc = xLoc + 15;
}
Я попытался инициализировать местоположение (и увеличить xLoc) как через конструктор, так и в самой форме в методе Key_MouseUp, но ни один из них, похоже, не имеет значения.
Логика кажется правильной, поскольку изображение первой музыкальной ноты всегда загружается, но я не могу понять, почему каждая другая нота после первой не отображается на моем экране.
Любая помощь будет оценена, спасибо!
Редактировать: возможно, может быть есть другая альтернатива PictureBox, которую я мог бы использовать для хранения музыкальных нот?