...
private int oldX, oldY;
private bool isDragging;...
Как реализовать перемещение панели GroupControl по экрану с помощью мыши.
Я недавно начал программировать на C#. И мне нужно сделать в Visual Studio перемещение панели (GroupControl), схватив мышкой за любую ее часть.
Кто знает, поделитесь опытом. Спасибо всем кто откликнится.
Цитата: panSlavon
Пипл нужна помощь в написании кода.
Я недавно начал программировать на C#. И мне нужно сделать в Visual Studio перемещение панели (GroupControl), схватив мышкой за любую ее часть.
Кто знает, поделитесь опытом. Спасибо всем кто откликнится.
Я недавно начал программировать на C#. И мне нужно сделать в Visual Studio перемещение панели (GroupControl), схватив мышкой за любую ее часть.
Кто знает, поделитесь опытом. Спасибо всем кто откликнится.
Речь идет о Panel или о GroupBox ? В любом случае,это просто.
- Вытащи на форму GroupBox и положи на него несколько элементов управления,допустим кнопку и текстовое поле.
- Добавь в класс формы переменные Код:
- Тебе нужны 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;
}
... - В ф-ии 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);
...
Цитата: m_Valery
Речь идет о Panel или о GroupBox ? В любом случае,это просто.
- Вытащи на форму GroupBox и положи на него несколько элементов управления,допустим кнопку и текстовое поле.
- Добавь в класс формы переменные Код:...
private int oldX, oldY;
private bool isDragging;... - Тебе нужны 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;
}
... - В ф-ии 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. Может какие-то свойства самой формы нужно выставить.