Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/41: Рейтинг темы: голосов - 41, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 03.01.2012
Сообщений: 27
1
.NET 4.x

Перемещение кнопки по форме

02.06.2012, 13:11. Показов 7452. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Задался задачей научиться перетаскивать кнопку по форме. То есть зажимаю кнопку мыши и меняю местоположение кнопки. Решил использовать Drag and Drop, но кнопка перемещается не совсем в те координаты, куда я навёл мышку, а если перенести ближе к краю формы, то кнопка исчезает иногда. Вот собственно код. Может кто подскажет как привильнее нужно сделать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            DoDragDrop(button1, DragDropEffects.Move);
        }
 
        private void Form4_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }
 
        private void Form4_DragDrop(object sender, DragEventArgs e)
        {
            int xParent = this.Left;
            int yParent = this.Top;
 
            e.Data.GetData(DataFormats.FileDrop, false);
            button1.Left = e.X - xParent;
            button1.Top = e.Y - yParent - 50;
        }
Ещё вопрос: можно ли сделать тоже самое что на видео с 3,47 минуты, но без использования DeveloperExpress? Если да, то где можно посмотреть пример или почитать, или приведите пример пожалуйста) Заранее спасибо за помощь.
Смотреть видео
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2012, 13:11
Ответы с готовыми решениями:

Перемещение кнопки по форме
Имеется класс Tank, в котором, помимо всего прочего, имеется следующий метод: public void...

После нажатия кнопки в первой форме, становится невидимым TextBox во второй форме
у меня 2 формы .в первой форме, после нажатия кнопки открывается вторая форма. как сделать чтобы...

При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента...

При нажатии правой кнопки мыши на форме с нее удаляются все кнопки
Написать программу, динамически порождающую на окне кнопки или метки. Левый верхний угол элемента...

2
0 / 0 / 1
Регистрация: 05.01.2011
Сообщений: 3
12.01.2013, 23:03 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        int component_index=0;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void создатьПанельToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Panel panel = new Panel();
            component_index++;
            panel.TabIndex = component_index;
            panel.Left = 0;
            panel.Top = 0;
            panel.BorderStyle = BorderStyle.FixedSingle;
            panel.MouseDown += control_MouseDown;
            panel.MouseMove += control_MouseMove;
            panel.MouseUp += control_MouseUp;
            designerPanel.Controls.Add(panel);
 
        }
        Boolean dragging;
        Point startDragPoint;
 
        private void control_MouseDown(object sender, MouseEventArgs e)
        {
            dragging = true;
            startDragPoint = e.Location;
 
        }
        private void control_MouseUp(object sender, MouseEventArgs e)
        {
            if (dragging)
            {
                dragging = false;
                designerPanel.Invalidate();
            }
 
        }
        private void control_MouseMove(object sender, MouseEventArgs e)
        {
            if (dragging)
            {
 
                //Чтобы компонент не вышел за край по горизонтали
                if ((((Control)sender).Left > 0) && (((Control)sender).Left < designerPanel.Width - ((Control)sender).Width ))
                {
                ((Control)sender).Left = ((Control)sender).Location.X + 
                  (e.Location.X - startDragPoint.X);
                }
                else
                {
                    if (((Control)sender).Location.X + (e.Location.X - startDragPoint.X) < 0)
                        ((Control)sender).Left = 0;
                    else
                        if (((Control)sender).Location.X + (e.Location.X - startDragPoint.X) > designerPanel.Width - ((Control)sender).Width)
                            ((Control)sender).Left = designerPanel.Width - ((Control)sender).Width;
                        else
                        ((Control)sender).Left = ((Control)sender).Location.X +
                          (e.Location.X - startDragPoint.X);             
                }
 
                //Чтобы компонент не вышел за край по вертикали
                if ((((Control)sender).Top > 0) && (((Control)sender).Top < designerPanel.Height - ((Control)sender).Height))
                {
                    ((Control)sender).Top = ((Control)sender).Location.Y +
                      (e.Location.Y - startDragPoint.Y);
                }
 
                else
                {
                    if (((Control)sender).Location.Y + (e.Location.Y - startDragPoint.Y) < 0)
                        ((Control)sender).Top = 0;
                    else
                        if (((Control)sender).Location.Y + (e.Location.Y - startDragPoint.Y) > designerPanel.Height - ((Control)sender).Height)
                            ((Control)sender).Top = designerPanel.Height - ((Control)sender).Height;
                        else
                            ((Control)sender).Top = ((Control)sender).Location.Y +
                              (e.Location.Y - startDragPoint.Y);
                }
 
            }
 
 
        }
 
        private void создатьКнопкуToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Button button1 = new Button();
            component_index++;
            button1.TabIndex = component_index;
            button1.Left = 20;
            button1.Top = 20;
            button1.MouseDown += control_MouseDown;
            button1.MouseMove += control_MouseMove;
            button1.MouseUp += control_MouseUp;
            designerPanel.Controls.Add(button1);
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
        }
 
    }
 
}
0
nio
13.01.2013, 01:49     .NET 4.x Перемещение кнопки по форме
  #3

Не по теме:

lexinKo, теме полгода

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2013, 01:49

Заменить картинку у кнопки на 1-ой форме по клику на кнопку на 2-ой форме
Есть две формы . На первой форме есть одна кнопка с картинкой &quot;А&quot; , когда нажимаешь на неё...

Счетчик. При нажатии кнопки на второй форме должно изменяться значение метки в первой форме
Подскажите вот есть две формы,при нажатии кнопки на второй форме должно изменяться значение метки в...

Перемещение объекта по форме
В общем, пишу программу просто для получения навыков, которая бы при нажатии кнопок стрелок...

Перемещение элементов по форме
Всем доброго времени суток. Подскажите, пожалуйста, как можно сделать так, чтобы, допустим, я по...


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

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