Public Class Form1 Private IsSizable As Boolean 'サイズ変更可能状態か? Private IsSizing As Boolean 'サイズ変更中か? Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown 'サイズ変更可能状態でマウスを押下した場合、サイズ変更中にする。 If IsSizable Then IsSizing = True End If End Sub Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave 'マウスがPictureBox外に出たときはカーソルを通常にして、フラグをすべてリセットする。 Me.Cursor = Cursors.Default IsSizable = False IsSizing = False End Sub Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove If IsSizing Then 'サイズ変更中ならサイズを変更する PictureBox1.Width = e.X Else 'サイズ変更中でないならサイズ変更可能状態か判断しマウスの形状を変更する。 ArrowMouse(sender, e.X, e.Y) End If End Sub ''' <summary> ''' サイズ変更可能状態か判断し、必要に応じてマウスの形状を変更する。 ''' MouseLeaveイベントでもマウスの状態を変更しているのに留意のこと。 ''' </summary> Private Sub ArrowMouse(ByVal cnt As Control, ByVal x As Integer, ByVal y As Integer) If x >= (cnt.Width - 5) Then 'コントロールの右端から内側に5ピクセル内にマウスがあるときサイズ変更可能 Me.Cursor = Cursors.SizeWE IsSizable = True Else 'それ以外のときサイズ変更不可。 Me.Cursor = Cursors.Default IsSizable = False End If End Sub Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp IsSizing = False End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PictureBox1.Image = Image.FromFile("C:\windows\winnt.bmp") PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage End Sub End Class