Суть в том, что у меня 18 изображений. Первые 9 - сетка (1-9), другие 9 - кусочки одного изображения (10-18). Мне надо, чтобы перетаскиваемый кусок изображения вставал в то же положение, что и, сетка на которую дропнулось изображение (игра пазл). Я знаю, что есть sender в событии dropdown сетки (первых 9 изображений). Но здесь я не понимаю одного... Почему он возвращает имя объекта на которое падает изображение, а не имя падающего изображения, вызывает же событие dragdrop именно падающее изображение, а не принимающее. В Delphi, помимо sender, была ещё одна переменная Source, которая как раз показывала тот объект, который активирует событие. Может быть есть такой же в C#?
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
/* if (sender is PictureBox)
{
pictureBox10.Location = (sender as PictureBox).Location;
(sender as PictureBox).Location =
}
*/
PictureBox picture = e.Data.GetData(typeof(PictureBox)) as PictureBox;
MessageBox.Show(Convert.ToString(picture));
}
Я пытался сделать проверку на то, что получу, но в итоге выводится пустой MessageBox
Надеюсь, что мой пример (там источник данных TreeView ) даст Вам подсказку (с PictureBox все точно также по этой схеме)
private void lstBxRegionsForSearch_DragDrop(object sender, DragEventArgs e)
{
//Анализируем, что принесли на мыше
TreeNode node = e.Data.GetData(typeof(TreeNode)) as TreeNode;
if (node == null) return;
//Дальше Ваши действия с объектом node (у Вас это будет конкретный pictureBox
.......
}
lstBxRegionsForSearch - это приемник, который обрабатывает событие DragDrop
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Рихтер в своей книге пишут, что использование примитивов режима ядра снижает производительность из-за доступа из управляемого кода в неуправляемый
Чтобы я не делал у меня не получается опубликовать приложениеРаботаю в Visual Studio 2017, использовал встроенный шаблон Angular
Как организовать доступ между двумя формами в C#, не нарушая инкапуляцию?