Несмотря на то, что я на самом деле просто копирую вставку, когда дело доходит до форм Windows
Код, который вы опубликовали, на самом деле ничего не сделает сам по себе!
Для работы, события Mousedown () и Mousemove () контроля должны быть подключены к этим методам:
- Выберите элемент управления в форме (PictureBox1).
- На панели свойств (внизу справа по умолчанию) нажмите значок «Молния болт», чтобы получить список событий для этого элемента управления.
- Найди
MouseDown
ввести и изменить раскрывающийся вправо от него наpictureBox1_MouseDown
. - Найди
MouseMove
ввести и изменить раскрывающийся вправо от него наpictureBox1_MouseMove
.
Теперь запустите его и перетащите PictureBox1.
РЕДАКТИРОВАТЬ: Вот как заставить код работать для нескольких элементов управления, как указано в моем комментарии ниже.
bool isDragged = false;
Point ptOffset;
private void button1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isDragged = true;
Button btn = (Button)sender;
ptOffset = new Point(btn.Location.X - Cursor.Position.X, btn.Location.Y - Cursor.Position.Y);
}
else
{
isDragged = false;
}
}
private void button1_MouseMove(object sender, MouseEventArgs e)
{
if (isDragged)
{
Point newPoint = Cursor.Position;
newPoint.Offset(ptOffset);
Button btn = (Button)sender;
btn.Location = newPoint;
}
}
private void button1_MouseUp(object sender, MouseEventArgs e)
{
isDragged = false;
}