Я создаю игру, похожую на скрэббл, в C #, где у меня есть коллекция «букв» (элементы управления PictureBox), и мне нужно перетащить их на игровую доску (TableLayoutPanel, отображающая сетку элементов управления PictureBox).
Сначала я пытался использовать метод DoDragDrop () для буквы PictureBox в обработчике события MouseDown, но не смог заставить элемент управления что-либо делать, как только я начал перетаскивать. Я ссылался на этот код проекта .
После исчерпания этого я пытаюсь «вручную» переместить PictureBox с помощью обработчиков событий MouseDown, MouseMove и MouseUp:
private void letter1PictureBox_MouseDown(object sender, MouseEventArgs e)
{
if (sender is PictureBox && e.Button == MouseButtons.Left)
{
isDragging = true;
dragOffsetX = e.X;
dragOffsetY = e.Y;
}
}
private void letter1PictureBox_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
PictureBox letter = (PictureBox)sender;
letter.BringToFront();
letter.Top += (e.Y - dragOffsetY);
letter.Left += (e.X - dragOffsetX);
}
}
Моя проблема в том, что при попытке перетащить PictureBox на мою TableLayoutPanel (или где-либо за пределами GroupBox, в котором она содержится), PictureBox исчезает за панелью управления / панелью.
![http://i.stack.imgur.com/uAJV9.png](https://i.stack.imgur.com/30XQc.png)
Я бы подумал, что вызов BringToFront () мог бы предотвратить это, нет?
Помощь очень ценится.