Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как реализовать перемещение панели GroupControl по экрану с помощью мыши.

38K
15 мая 2008 года
panSlavon
2 / / 15.05.2008
Пипл нужна помощь в написании кода.
Я недавно начал программировать на C#. И мне нужно сделать в Visual Studio перемещение панели (GroupControl), схватив мышкой за любую ее часть.
Кто знает, поделитесь опытом. Спасибо всем кто откликнится.
320
15 мая 2008 года
m_Valery
1.0K / / 08.01.2007
Цитата: panSlavon
Пипл нужна помощь в написании кода.
Я недавно начал программировать на C#. И мне нужно сделать в Visual Studio перемещение панели (GroupControl), схватив мышкой за любую ее часть.
Кто знает, поделитесь опытом. Спасибо всем кто откликнится.



Речь идет о Panel или о GroupBox ? В любом случае,это просто.

  1. Вытащи на форму GroupBox и положи на него несколько элементов управления,допустим кнопку и текстовое поле.
  2. Добавь в класс формы переменные
     
    Код:
    ...
            private int oldX, oldY;
            private bool isDragging;...
  3. Тебе нужны 3 event-a
    Код:
    ...
            private void groupBox1_MouseDown(object sender, MouseEventArgs e)
            {
                isDragging = true;
                oldX = e.X;
                oldY = e.Y;
            }
           private void groupBox1_MouseMove(object sender, MouseEventArgs e)
            {
               if (isDragging)
                {
                    groupBox1.Top = groupBox1.Top + (e.Y - oldY);
                    groupBox1.Left = groupBox1.Left + (e.X - oldX);
                }
            }
            private void groupBox1_MouseUp(object sender, MouseEventArgs e)
            {
                isDragging = false;
            }
    ...
  4. В ф-ии InitializeComponent() допиши
     
    Код:
    ...
    this.groupBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.groupBox1_MouseDown);
     this.groupBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.groupBox1_MouseMove);
     this.groupBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.groupBox1_MouseUp);
    ...
И всё.Перетаскивай:)
38K
15 мая 2008 года
panSlavon
2 / / 15.05.2008
Цитата: m_Valery
Речь идет о Panel или о GroupBox ? В любом случае,это просто.
  1. Вытащи на форму GroupBox и положи на него несколько элементов управления,допустим кнопку и текстовое поле.
  2. Добавь в класс формы переменные
     
    Код:
    ...
            private int oldX, oldY;
            private bool isDragging;...
  3. Тебе нужны 3 event-a
    Код:
    ...
            private void groupBox1_MouseDown(object sender, MouseEventArgs e)
            {
                isDragging = true;
                oldX = e.X;
                oldY = e.Y;
            }
           private void groupBox1_MouseMove(object sender, MouseEventArgs e)
            {
               if (isDragging)
                {
                    groupBox1.Top = groupBox1.Top + (e.Y - oldY);
                    groupBox1.Left = groupBox1.Left + (e.X - oldX);
                }
            }
            private void groupBox1_MouseUp(object sender, MouseEventArgs e)
            {
                isDragging = false;
            }
    ...
  4. В ф-ии InitializeComponent() допиши
     
    Код:
    ...
    this.groupBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.groupBox1_MouseDown);
     this.groupBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.groupBox1_MouseMove);
     this.groupBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.groupBox1_MouseUp);
    ...
И всё.Перетаскивай:)



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

P.S. Может какие-то свойства самой формы нужно выставить.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог