Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 13
1

Сделать перемещаемую кнопку кликабельной, когда это нужно

11.04.2012, 23:22. Показов 1826. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал пару кнопок на форме, двигаются, но есть проблема, надо чтобы когда кнопка не двигается то при нажатии(клике) на нее выскакивало окошко "вы нажали меня", а когда ее кликаю и двигаю то ничего не происходило.
Вопрос 1. Как сделать этот метод клика?
Вопрос 2. Как связать кнопки с панели инструментов с программой, а не создавать их кодом?
Вопрос 3. И как сделать чтобы кнопки не сталкивались?

Заранее спасибо )
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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            MyButton one = new MyButton();
            one.Name = "one";
            one.Text = "111";
            this.Controls.Add(one);
            MyButton two = new MyButton();
            two.Name = "two";
            two.Text = "111";
            this.Controls.Add(two);
 
        }
 
 class MyButton : Button
        {
        Point DownPoint;
        bool IsDragMode;
        protected override void OnMouseDown(MouseEventArgs mevent)
        {
            DownPoint = mevent.Location;
            IsDragMode = true;
            base.OnMouseDown(mevent);
        }
        protected override void OnMouseUp(MouseEventArgs mevent)
        {
            IsDragMode = false;
            base.OnMouseUp(mevent);
        }
        protected override void OnMouseMove(MouseEventArgs mevent)
        {
            if (IsDragMode)
            {
                Point p = mevent.Location;
                Point dp = new Point(p.X - DownPoint.X, p.Y - DownPoint.Y);
                Location = new Point(Location.X + dp.X, Location.Y + dp.Y);
            }
            base.OnMouseMove(mevent);
        }
        protected override void OnMouseClick(MouseEventArgs mevent)
        {
             MessageBox.Show("Вы нажали кнопку");
             base.OnMouseClick(mevent);
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2012, 23:22
Ответы с готовыми решениями:

StreamReader: когда закрывать поток и нужно ли это делать
Нужно ли закрывать постоянно? sr = new StreamReader("123.txt"); string a = sr.ReadToEnd();...

Как сделать цикл, который будет выполнятся только когда происходит нажатие на кнопку?
Помогите, не знаю как сделать цикл, который будет выполнятся только когда происходит нажатие на...

Нужно сделать картинку не кликабельной
Нужно сделать картинку не кликабельной, вот код <a...

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

2
118 / 52 / 9
Регистрация: 23.12.2011
Сообщений: 120
13.04.2012, 11:50 2
Не знаю, отразится ли это в будущем где-то, но я бы сделала вот так:
C#
1
2
3
4
5
6
7
8
9
10
        protected override void OnMouseUp(MouseEventArgs mevent)
        {
            base.OnMouseUp(mevent);
            IsDragMode = false;
        }
        protected override void OnMouseClick(MouseEventArgs mevent)
        {
            if (!IsDragMode) MessageBox.Show("Вы нажали кнопку");
            base.OnMouseClick(mevent);
        }
0
0 / 0 / 0
Регистрация: 11.04.2012
Сообщений: 13
13.04.2012, 16:57  [ТС] 3
Пробовал не получилось
0
13.04.2012, 16:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2012, 16:57
Помогаю со студенческими работами здесь

Прочистка видеокарты, когда это нужно делать, с каким интервалом времени?
Добрый вечер! Видеокарта ASUS GTS 450 во время игры в GTA San Andreas греется до 55 градусов- это...

нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?
Здравствуйте.У меня возникла проблема. Помогите пожалуйста!Модуль в понедельник , про таблицы...

Нужно сделать кнопку в Форме - кнопку перехода с формы на форму с последующим закрытием первой формы
Нужно сделать кнопку в Форме - кнопку перехода с формы на форму с последующим закрытием первой...

Code::Blocks Когда нажимаешь среднюю среднюю кнопку мыши, то вставляется содержимое буфера обмена. Как это можно изменить?
И еще где найти русифицированную Code::Blocks?


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

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