Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Soundpro
89 / 86 / 39
Регистрация: 19.10.2012
Сообщений: 243

Динамически создаваемые контролы. События

10.09.2013, 23:15. Показов 814. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая. есть динамически создаваемые кнопки. Кнопки должны создаваться с возможностью последующего перетаскивания. На события подписался, но как определять что перетаскивать нужно именну ту кнопку на которой зажата мышь понять не могу. Перемещается только заранее созданная кнопка с именем button1.

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 ArrayList buttons = new ArrayList();
     private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            if (flag == 1)
            {
                Button button = new Button();
                this.Controls.Add(button);
                button.Name = ("button" + (buttons.Count + 1));
                button.Text = (buttons.Count + 1).ToString();
                button.Location = new Point(PointToClient(Cursor.Position).X - 14, PointToClient(Cursor.Position).Y - 14);
                button.Size = new Size(28, 28);
                button.MouseDown += new MouseEventHandler(button1_MouseDown);
                button.MouseMove += new MouseEventHandler(button1_MouseMove);
                button.MouseUp += new MouseEventHandler(button1_MouseUp);
                buttons.Add(button.Name);
            }
        }
 
        public void button1_MouseDown(object sender, MouseEventArgs e)
        {
            fl = true;
        }
 
        public void button1_MouseMove(object sender, MouseEventArgs e)
        {
            if (fl && (flag == 6))
            {
                button1.Location = new Point(PointToClient(Cursor.Position).X - 14, PointToClient(Cursor.Position).Y - 14);
            }
        }
 
        public void button1_MouseUp(object sender, MouseEventArgs e)//Знаю что именно из-за этого двигается только 1 кнопка. Но не знаю как получить имя зажатой кнопки.
        {
            fl = false;
        }
Добавлено через 10 минут
Сам разобрался, если кому интересно
C#
1
this.ActiveControl.Location = new Point(PointToClient(Cursor.Position).X - 14, PointToClient(Cursor.Position).Y - 14);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.09.2013, 23:15
Ответы с готовыми решениями:

Назначение событий на динамически создаваемые контролы
Как назначить обработчик нажатия на picturebox, который создаётся на форме кликом мыши?

Как в ListView на создаваемые Item'ы наложить события, вроде MouseClick, MouseMove
Добрый день. Как в ListView на создаваемые Item'ы наложить события, вроде MouseClick, MouseMove? И вообще реально ли сделать эти объекты...

Потоки, события, контролы
Есть класс "Main_Control", в котором происходит чтение SerialPort в своем потоке. Есть форма "Terminal_Win" с textbox'ом, в...

2
 Аватар для Dexa
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
11.09.2013, 07:00
а зачем так?
C#
1
Button activeButton = (Button)sender;
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
11.09.2013, 14:35
Цитата Сообщение от Soundpro Посмотреть сообщение
C#
1
2
3
4
5
6
7
public void button1_MouseMove(object sender, MouseEventArgs e) 
{ 
if (fl && (flag == 6)) 
{ 
button1.Location = new Point(PointToClient(Cursor.Position).X - 14, PointToClient(Cursor.Position).Y - 14); 
} 
}
просто если не менять многое:
C#
1
2
3
4
5
6
7
public void button1_MouseMove(object sender, MouseEventArgs e) 
{ 
if (fl && (flag == 6)) 
{ 
((Button)sender).Location = new Point(PointToClient(Cursor.Position).X - 14, PointToClient(Cursor.Position).Y - 14); 
} 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2013, 14:35
Помогаю со студенческими работами здесь

C# и создаваемые динамически объекты
Вообщем задали написать курсовую программу на языке C# Мало того что никто язык этот не знает в группе, так нас ему ещё не учат (говорят...

События в динамически созданных контроллах
Здравствуйте, у меня проблема. Не могу понять как сделать обработчик для динамических контролов. Создаю контролы через массивы: TextBox...

Подписка на события динамически создаваемых элементов
При нажатии на кнопку на форму добавляются PictureBox-ы. Как описать для них событие Click? Помогите пожалуйста... :wall: Второй день не...

Обработчик события динамически созданного контрола
Есть событие контрола panel_MouseMove, panel динамически создан и поэтому при создании он ссылается на это событие. В этом событие можно...

Динамически созданные элементы. Подписка на события
Подскажите пожалуйста как создать событие для каждой программно созданной кнопки? И ещё мне нужно чтобы при следующем запуске программы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru