C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 56 を表示中)
■31559 / )  フォームからはみ出ないようにテキストボックスをマウスで移動
□投稿者/ キム (1回)-(2009/01/23(Fri) 17:44:44)

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

返信 編集キー/


管理者用

- Child Tree -