|
分類:[VB.NET/VB2005 以降]
初めて投稿します。
VB初心者です。
WinXP、VB.NET2005という環境でやっています。
フォーム上のテキストボックスをマウスで移動させてかつ、フォームから
はみ出ないようにするというのを作っているのですが、右端はできているのですが上と左端のやり方が良くわかりません。
右端のを参考に色々考えたのですが、なかなか思い通りに動きませんでした。
下も一応は出来ているのですが、右下あたりではみ出るようになってしまいます。
よろしくお願いします。
見にくかったらすみません。
' 移動前の位置
Dim startX As Integer
Dim startY As Integer
Dim FormWidth As Integer = Me.ClientSize.Width
Dim FormHeight As Integer = Me.ClientSize.Height
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
' 左クリックの場合
If e.Button = Windows.Forms.MouseButtons.Left Then
'移動前の位置を記録
startX = e.X
startY = e.Y
End If
End Sub
Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
' コントロールの取得
Dim control As Control = CType(sender, Control)
' コントロールの位置設定
If control.Left + e.X - startX + TextBox1.Size.Width < FormWidth Then
If control.Top + e.Y - startY + TextBox1.Size.Height > FormHeight Then
control.Left = control.Left + e.X - startX - TextBox1.Size.Height
Else
control.Left = control.Left + e.X - startX
control.Top = control.Top + e.Y - startY
End If
Else
control.Top = control.Top + e.Y - startY
End If
Me.Refresh()
End If
End Sub
|