Таскание формы за элемент

  • Автор темы Adiost
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Adiost

Гость
#1
Интересуюсь, как таскать форму за элемент? В форме отключен стиль окна
Код:
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
и нужно сделать так, что бы его можно было таскать за элемент, скажем, Panel1. В сети нашел код
Код:
Public BarX
Public BarY

Private Sub imgMove_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single) 
If Button = 1 Then BarY = Y: BarX = X 
End Sub

Private Sub imgMove_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)

If Button = 1 Then 
frmMain.Top = frmMain.Top + Y - BarY
frmMain.Left = frmMain.Left + X - BarX
end if 

End Sub
но он к сожалению не работает, как бы я его не насиловал. Может кто подсказать?
 
A

Adiost

Гость
#3
etc, он элементарный :gifts:
Но для реализации некоторых идей надо хорошо пораскинуть мозгами... В случае с моей идеей я мозги еще туда куда надо не закинул D:
 
A

Adiost

Гость
#5
Вы про тот код? Да ошибок нет, он попросту не работает. Принцип я его понял, разве что не знаю, что есть "Button". То что он объявлен, это понятно, но что задает его значение? Если есть код
Код:
If Button = 1
значит что-то задает значение этому баттону. Что?
 
E

etc

Гость
#6
Button это параметер, выставляем его вызывающая функция, это не интересно.
Интересно заходит ли в ваши обработчики и как они работают.
 
A

Adiost

Гость
#7
etc
Да не работает вообще. Пытаюсь таскать элемент, в логе тихо.
 
E

etc

Гость
#8
Обработчики привязаны? или просто код копипастили?
 
A

Adiost

Гость
#9
Я не очень опытен, честно сказать... Код тупо копипастил, но ошибок вроде никаких нету.
Кстати, забыл сказать, работаю в VB10
 
E

etc

Гость
#10
Надо привязать, в дизайнере в свойствах важей картинки указать обработчики.
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#15
какой код? ты за панель двигать хочешь, значит, у панели ставишь обработчики событий мыши (MouseDown, MouseMove) - те, которые писал выше.
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#17
судя по названию imgMove, в оргинале должно было быть привязано к картинке

Добавлено: может ли панель обработать эти события - смотри сам)
 
A

Adiost

Гость
#18
Только теперь сообразил. С обработчиками все в порядке, настроил под себя.
В любом случае, думаю, должен же быть более простой вариант... Тот код скорее больше подходит для VB6, а тут уж .NET, не может быть так громоздко.
 
T

Tanya

Гость
#19
Код:
Private Sub Panel1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
BarX = e.X
BarY = e.Y
End If
End Sub


Private Sub Panel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Me.Top = Me.Top + e.Y - BarY
Me.Left = Me.Left + e.X - BarX
End If
End Sub
Более простой вариант:
Me.ТаскатьФормуЗаЭлемент = True

Шутка )))
 
Статус
Закрыто для дальнейших ответов.