| 分類:[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 |