19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
1

Движение динамически созданных кнопок по панели

26.09.2014, 23:06. Показов 3363. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть panel на нее динамически добавляются кнопки,как реализовать движение кнопок?
Реализовывал на обычную кнопку с помощью mousemove mousedown ,а динамическим кнопкам разобрался только с обработчиком onclick,если можно эти обработчики сделать на динамические ,подскажите как,пожалуйста.
Спасибо заранее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2014, 23:06
Ответы с готовыми решениями:

Удаление динамически созданных кнопок
Создаётся динамически, к примеру, 10 кнопок. На каждую созданную кнопку по нажатию ПКМ должно...

Выделение динамически созданных кнопок на форме
Как убрать выделение динамически созданных кнопок. У меня на форме несколько кнопок. После...

Обработчик событий динамически созданных кнопок
Уважаемые форумчане, помогите студентам! У нас есть функция, которая создает количество кнопок,...

Как обратиться к массиву динамически созданных кнопок
Нужна помощь в написании программы. Вот код динамического создания одной кнопки: Button button...

7
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 23:12 2
Обычно движение делается путём изменения координат кнопки по тому или иному принципу
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.09.2014, 23:22  [ТС] 3
Я вот так реализовывал,но через обработчики,как мне их добавть на динамически созданные кнопки?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 private int x = 0;
        private int y = 0;
    
 
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            x = e.X;
            y = e.Y;
        }
 
        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Point pos = new Point(Cursor.Position.X, Cursor.Position.Y - y);
                button1.Location = PointToClient(pos);
            }
        }
здесь я вот создаю кнопки и обработчик
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 private void button4_Click(object sender, EventArgs e)
        {
           Button oldbutton = (Button)sender;
           Button newbutton = new Button();
           newbutton.Text = "Кнопка №" + colbutton;
           colbutton++;
           newbutton.Click += newbutton_Click;
           panel1.Controls.Add(newbutton);
 
            
 
        
        }
 
        void newbutton_Click(object sender, EventArgs e)
        {
            btnH = (sender as Button);
            btnW = (sender as Button);
            trackBar1.Value = btnH.Height;
            trackBar2.Value = btnW.Width;
 
 
        }
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 23:30 4
Добавь эти же обработчики к динамическим контролам:
C#
1
2
newbutton.MouseDown += button1_MouseDown;
newbutton.MouseMove += button1_MouseMove;
1
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
26.09.2014, 23:30 5
Добавить события mousemove mousedown и mouseup для каждой динамической кнопки(при создании) сделать общие обработчики, хоть те же самые, что и у не динамической, и добавить в mousemove
C#
1
((Button)sender).Location = тут координаты мыши + поравка ; //он будет таскать за собой кнопку на которой сработало событие
ну а дальше все как с не динамической.
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
27.09.2014, 00:06  [ТС] 6
ViterAlex, если добавить так,то при клике на динамическую кнопку на ее место встает button1.
Driwars, не могли бы вы поподробнее сказать как при создании кнопки создать обработчик,так как я на клик делал?
C#
1
newbutton.Click+=newbutton_click;
Заранее спасибо
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
27.09.2014, 13:45 7
Добавлять обработчики в динамические кнопки так.
C#
1
newbutton.Click += new System.EventHandler(newbutton_Click);
сам обработчик
C#
1
2
3
4
5
6
private void newbutton_Click(object sender, EventArgs e)
{
((Button)sender)// это класс динамической кнопки по которой кликнули ;
//можно сделать чтобы она отпрыгивала от мыши, или перемещалась в координаты куда кликали мышкой до этого, это совсем просто:)
 
}
С динамическим обьектами удобно работать используя list<Button> к примеру.
Я немного ошибся в предыдущем сообщении, в том что mousemove не имеет отношения к кнопкам. Оно возникает при передвижении мыши, и вот в его обработчик нужно передать управление кнопкой через её класс.

Добавлено через 16 минут
Вот полный код
при нажатии на кнопку button2 создает динамически новую, после клика на кнопку она запоминается и поставится в другое место при новом клике.
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
{
 Button b = new Button();
        List<Button> lb = new List<Button>();
 private void button2_Click(object sender, EventArgs e)
        {
            Button bt = new Button();
            bt.Text = i.ToString();
            bt.Name = "textBox6";
            bt.Size = new System.Drawing.Size(27, 20);
            bt.Location=new Point(((Button)sender).Location.X+20,((Button)sender).Location.Y+20);
            bt.Click += new System.EventHandler(bt_Click);
            Controls.Add(bt);
            lb.Items.Add(bt);
            i++;
        }
        private void bt_Click(object sender, EventArgs e)
        {
            b = ((Button)sender);  
        }
 
        private void button2_MouseMove(object sender, MouseEventArgs e)
        {
            
        }
 
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
          b.Location = e.Location;
        }
под вашу задачу чуть доделать обработчики mousemove mousedown и mouseup и все.
1
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
30.09.2014, 22:49  [ТС] 8
Driwars, Спасибо Большое!
0
30.09.2014, 22:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2014, 22:49
Помогаю со студенческими работами здесь

Движение автоматически созданных кнопок
Необходимо создать класс, для рандомного движения кнопок по форме вниз (по типу снега или дождя)....

Считать значения всех динамически созданных TextBox на панели
Привет)) Есть задача - на форме имеется панелька, на ней динамически создаеться матрица из...

Как определить, по какой из динамически созданных кнопок совершили клик
Добрый день, вопрос может и тривиальный, но все же требуется помощь. Суть в чем. На форме создается...

Обработчик динамически созданных кнопок
есть цикл, в котором создаются кнопки for (k=1;k&lt;20;k++){ Button newBtn=new...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru