Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
172 / 62 / 12
Регистрация: 22.12.2015
Сообщений: 2,546
1

Как определиться объект какого типа мы перетаскивали мышью?

19.04.2017, 09:12. Просмотров 866. Ответов 4
Метки нет (Все метки)


Всем здравствуйте.
На форме label1 и button1. Оба объекта могут инициировать перетаскивание по форме (DragOnDrop). Нужно определить какой тип объекта мы перетаскиваем. Скорее всего для этого нужно использовать аргумент события с именем e (DragEventArgs e).
Но как?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
namespace Drop
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.AllowDrop = true;
        }
 
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            button1.DoDragDrop(sender, DragDropEffects.All);
        }
 
        private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            label1.DoDragDrop(sender, DragDropEffects.All);
        }
 
        private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.All;
        }
 
        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            MessageBox.Show("Что мы таскали? Label или Button?"); 
        }
 
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2017, 09:12
Ответы с готовыми решениями:

Как узнать, какого типа объект находится по указателю
Есть массив указателей базового класса, нужно узнать какие типы этих объектов. class Shape{...

От какого типа каждый объект прямо или косвенно является производным в .Net?
1 System.Object 2 System.Exception 3 Enumerator 4 System.Type

Как переделать данный код, чтобы при вращении мышью объект ни вращался а поворачивался?
Как мне сделать с помощью DirectInput так чтобы при вращении мышью объект ни вращался а...

Как понять, какого типа константа?
константу обычно обо значают типа s = 'stroka'; n = 1344; Как понять какого типа константа n?...

4
Фрилансер
735 / 346 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
19.04.2017, 09:29 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    public partial class Form1 : Form
    {
        Control dragedControl = null;
        public Form1()
        {
            InitializeComponent();
            this.AllowDrop = true;
        }
 
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            dragedControl = button1;
            button1.DoDragDrop(sender, DragDropEffects.All);
        }
 
        private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            dragedControl = label1;
            label1.DoDragDrop(sender, DragDropEffects.All);
        }
 
        private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.All;
        }
 
        private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            MessageBox.Show(dragedControl.Name);
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
1
172 / 62 / 12
Регистрация: 22.12.2015
Сообщений: 2,546
19.04.2017, 09:37  [ТС] 3
pro_100_gram, спасибо. А без дополнительной переменной Control dragedControl разве нельзя обойтись? Как использовать аргумент события с именем e (DragEventArgs e)?
0
Фрилансер
735 / 346 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
19.04.2017, 09:50 4
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

jkrnd, вот такую костылюху можно внедрить:

C#
1
2
3
4
5
6
7
8
9
10
11
private void Form1_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetFormats()[0] == typeof(Label).ToString())
            {
                MessageBox.Show(((Label)e.Data.GetData(e.Data.GetFormats()[0])).Name);
            }
            else if (e.Data.GetFormats()[0] == typeof(Button).ToString())
            {
                MessageBox.Show(((Button)e.Data.GetData(e.Data.GetFormats()[0])).Name);
            }
        }
1
172 / 62 / 12
Регистрация: 22.12.2015
Сообщений: 2,546
19.04.2017, 10:08  [ТС] 5
pro_100_gram, первый вариант более удачный, второй действительно похож на костыль. Даже не ожидал Спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2017, 10:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Какого типа это ДУ и как его решать
Подскажите пож-та какого типа это ДУ и как его решать: y'=x+x^2+y^2 Похоже на ур-е Бернулли y'...

Какого типа это уравнение и как его решить - 1
Какого типа это ур-ие и как его решить (дайте, пожалуйста, хотя бы подсказку): yy'=-2xsec(y)

Какого типа это уравнение и как его решить - 2
Какого типа это ур-ние и как его решить (дайте, пожалуйста, хотя бы подсказку): x^2*dy/dx+y^2-2xy=0

Какого типа это уравнение и как его решить?
Какого типа это диффур. и как его решить (дайте, пожалуйста, хотя бы подсказку): dy/dx-y/x-8/x^2 ...

В переменную какого типа можно запихнуть двумерный массив типа String
тип Variant это правильно или можно урезать? Waches показывает тип массива String а тип переменной...

При перетаскивании мышкой какого-либо файла мышь перескакивает на файл, который находится мод мышью и кликает по нему
При перетаскивании мышкой какого-либо файла мышь перескакивает на файл, который находится мод мышью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.