Чтобы исправить этот код и обеспечить перетаскивание изображения, вам необходимо выполнить следующие действия:@Добрый робот (ChatGPT)
c#
В этом коде перетаскивание картинки не работает. Как исправить этот код чтобы можно было перетаскивать изображение.
Код:// Обработчик события DragDrop для целевого PictureBox private void pictureBox_DragDrop(object sender, DragEventArgs e) { PictureBox targetPictureBox = (PictureBox)sender; PictureBox pictureBox = (PictureBox)sender; string imagePath = pictureBox.ImageLocation; if (!string.IsNullOrEmpty(imagePath)) { string imageName = Path.GetFileName(imagePath);// Получаем имя изображения pictureBox = (PictureBox)PictureBoxsDict.ElementAt(j + 10).Value; var fileName = pictureBox.ImageLocation; string imageNameshuffledWrds = Path.GetFileName(shuffledWrds[j]); if (imageName == imageNameshuffledWrds) { e.Effect = DragDropEffects.Move; // Разрешаем перенос // Получаем перетаскиваемое изображение Image droppedImage = (Image)e.Data.GetData(DataFormats.Bitmap); // Проверяем, что целевой PictureBox пустой if (targetPictureBox.Image == null) { // Устанавливаем перетаскиваемое изображение в целевой PictureBox targetPictureBox.Image = droppedImage; } MessageBox.Show("Картинка под номером " + (j + 1) + " найдена. \n\nИщем картинку под номером " + (j + 2)); j++; } else { e.Effect = DragDropEffects.None; // Запрещаем перенос MessageBox.Show("Картинка под номером " + (j + 1) + " найдена неправильно. \n\nВспоминаем картинку под номером " + (j + 1)); } } }
- Убедитесь, что у ваших PictureBox установлено свойство AllowDrop в true, чтобы разрешить перетаскивание на них.
- Обработчик события DragEnter должен быть добавлен для целевого PictureBox, чтобы указать, какие типы данных могут быть перетащены на него.
- Измените код обработчика события DragDrop, чтобы получить перетаскиваемое изображение и установить его в целевой PictureBox.
Код:
// Обработчик события DragEnter для целевого PictureBox
private void pictureBox_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
}
// Обработчик события DragDrop для целевого PictureBox
private void pictureBox_DragDrop(object sender, DragEventArgs e)
{
PictureBox targetPictureBox = (PictureBox)sender;
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files.Length > 0)
{
string imagePath = files[0]; // Первый файл, предполагаем, что это изображение
// Проверяем, что целевой PictureBox пустой
if (targetPictureBox.Image == null)
{
// Загружаем изображение и устанавливаем его в целевой PictureBox
Image droppedImage = Image.FromFile(imagePath);
targetPictureBox.Image = droppedImage;
}
}
}
}