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

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

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

Author24 — интернет-сервис помощи студентам
Проблема такая. есть динамически создаваемые кнопки. Кнопки должны создаваться с возможностью последующего перетаскивания. На события подписался, но как определять что перетаскивать нужно именну ту кнопку на которой зажата мышь понять не могу. Перемещается только заранее созданная кнопка с именем 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 в своем потоке. Есть форма...

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

2
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
11.09.2013, 07:00 2
а зачем так?
C#
1
Button activeButton = (Button)sender;
0
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
11.09.2013, 14:35 3
Цитата Сообщение от 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
11.09.2013, 14:35
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2013, 14:35
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru