Заблокирован
1

Как перетаскивать форму за ОПРЕДЕЛЁННЫЙ элемент управления

27.01.2020, 14:43. Показов 1661. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В интернете есть способ только как передвигать только через все элементы, например:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Class Form1
Private ptClient As Point
 
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEven tArgs) Handles Me.MouseDown
Dim cx, cy As Integer
'Вычисляем размер рамки окна,с учетом высоты заголовка
'если FormBorderStyle <> Windows.Forms.FormBorderStyle. None
'Можно воспользоваться так же SystemInformation.FrameBorderS ize
cx = (Me.Width - ClientRectangle.Width) \ 2
cy = (Me.Height - ClientRectangle.Height - cx)
ptClient = New Point(e.X + cx, e.Y + cy)
End Sub
 
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEven tArgs) Handles Me.MouseMove
If e.Button = MouseButtons.Left Then
Dim ptTemp As Point = Me.PointToScreen(New Point(e.X, e.Y))
Dim ptLocation As Point
'Находим смещение до верхней левой точки окна
ptLocation.X = ptTemp.X - ptClient.X
ptLocation.Y = ptTemp.Y - ptClient.Y
Me.Location = ptLocation
End If
End Sub
End Class
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2020, 14:43
Ответы с готовыми решениями:

На всю форму залита картинка как фон, при зажатой левой клавише можно перетаскивать форму по экрану
Всем доброго времени суток. Пробовал сделать как в простом VSL Application, ничего не получается:...

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

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

Как загрузить динамически в форму элемент управления?
Можно ли во время работы в форму загрузить какой нибудь ЭУ, CoomandButton, и как это сделать?

3
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,028
27.01.2020, 14:49 2
так попробуйте, например компонент Panel, за него тащите всю форму
VB.NET
1
2
3
4
    Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
        Me.Capture = False ' Блокируем захват мыши 
        WndProc(Message.Create(Me.Handle, &HA1, 2, IntPtr.Zero))
    End Sub
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
27.01.2020, 14:58 3
Лучший ответ Сообщение было отмечено 713881399 как решение

Решение

можно так
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Dim drag As Boolean
    Dim mousex As Integer
    Dim mousey As Integer
    Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
         If e.Button = MouseButtons.Left Then
            drag = True
            mousex = Cursor.Position.X - Me.Left
            mousey = Cursor.Position.Y - Me.Top
        End If
    End Sub
    Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
        If drag Then
            Me.Top = Cursor.Position.Y - mousey
            Me.Left = Cursor.Position.X - mousex
        End If
    End Sub
    Private Sub Panel1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseUp
        drag = False
    End Sub
и ещё вариант
VB.NET
1
2
3
4
5
6
7
 Dim Pos As Point
    Private Sub Panel1_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
        If e.Button = Windows.Forms.MouseButtons.Left Then
            Me.Location += Control.MousePosition - Pos
        End If
        Pos = Control.MousePosition
    End Sub
3
Заблокирован
27.01.2020, 15:01  [ТС] 4
Yury Komar, этот пример не заработал, но мне помог другой чувак)
0
27.01.2020, 15:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2020, 15:01
Помогаю со студенческими работами здесь

Как в подчиненную форму программно добавить элемент управления?
Всем добрый день. Собственно проблема - заголовк. Не могу никак из кода программы добавить элемент...

Как перетаскивать форму без бордюров
Не могу перетаскивать форму ( убрал свойства FormBorderStyle = none ) Но ничего не выходит...

Как перетаскивать форму без бордюров?
как перетаскать форму, которая не имеет бордюров (то есть заголовка и.тд)?

Как можно перетаскивать форму без заголовка?
Привет всем, не подскажите, как можно перетаскивать форму без загововка, т.е. form1.BorderStyle...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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