实现运行以后改变控件的大小并能拖动控件
2007-12-24 14:19
489 查看
Public Class Form1
'改变控件大小
Private Sub MoveControls(ByVal x As Integer, ByVal mypanel As Panel, ByVal mypicture As PictureBox)
mypicture.Left = mypicture.Left + x
mypanel.Width = mypicture.Left - mypanel.Left
End Sub
'当鼠标落到picturebox上时,鼠标变成水平改变大小状态,如果是左键被按下,则改变大小
Private Sub PictureBoxMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim mypicture As PictureBox = CType(sender, PictureBox)
mypicture.Cursor = Cursors.SizeWE
Dim picturename As String = mypicture.Name
Dim panelname As String = picturename.Substring(0, picturename.Length - 2)
Dim mypanel As Panel = CType(Me.Controls(panelname), Panel)
If e.Button = Windows.Forms.MouseButtons.Left Then
MoveControls(e.X, mypanel, mypicture)
End If
End Sub
Dim x As Integer = 0
Dim y As Integer = 0
'当鼠标移动到panel上时,鼠标变成移动状态,如果左键被按下,则把鼠标的位置得到
Private Sub PanelMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim mypanle As Panel = CType(sender, Panel)
mypanle.Cursor = Cursors.SizeAll
If e.Button = Windows.Forms.MouseButtons.Left Then
x = e.X
y = e.Y
End If
End Sub
'如果鼠标放下,同时鼠标的位置被改变,移动panel位置
Private Sub PanelMouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim mypanel As Panel = CType(sender, Panel)
Dim picturename As String = mypanel.Name & "_p"
Dim mypicture As PictureBox = CType(Me.Controls(picturename), PictureBox)
If x <> 0 And y <> 0 Then
mypanel.Left = mypanel.Left + x
mypicture.Left = mypicture.Left + x
mypanel.Top = mypanel.Top + y
mypicture.Top = mypicture.Top + y
End If
x = 0
y = 0
End Sub
'动态创建两个控件,做测试
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mypanel As New Panel
mypanel.Name = "test"
mypanel.BackColor = Color.Blue
mypanel.Top = 100
mypanel.Left = 100
mypanel.Width = 100
mypanel.Height = 15
AddHandler mypanel.MouseUp, AddressOf PanelMouseUp
AddHandler mypanel.MouseMove, AddressOf PanelMouseMove
Dim mypic As New PictureBox
mypic.Name = mypanel.Name & "_P"
mypic.BackColor = Color.Black
mypic.Top = mypanel.Top
mypic.Left = mypanel.Left + mypanel.Width
mypic.Width = 3
mypic.Height = mypanel.Height
AddHandler mypic.MouseMove, AddressOf PictureBoxMouseMove
Me.Controls.Add(mypanel)
Me.Controls.Add(mypic)
End Sub
End Class
'改变控件大小
Private Sub MoveControls(ByVal x As Integer, ByVal mypanel As Panel, ByVal mypicture As PictureBox)
mypicture.Left = mypicture.Left + x
mypanel.Width = mypicture.Left - mypanel.Left
End Sub
'当鼠标落到picturebox上时,鼠标变成水平改变大小状态,如果是左键被按下,则改变大小
Private Sub PictureBoxMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim mypicture As PictureBox = CType(sender, PictureBox)
mypicture.Cursor = Cursors.SizeWE
Dim picturename As String = mypicture.Name
Dim panelname As String = picturename.Substring(0, picturename.Length - 2)
Dim mypanel As Panel = CType(Me.Controls(panelname), Panel)
If e.Button = Windows.Forms.MouseButtons.Left Then
MoveControls(e.X, mypanel, mypicture)
End If
End Sub
Dim x As Integer = 0
Dim y As Integer = 0
'当鼠标移动到panel上时,鼠标变成移动状态,如果左键被按下,则把鼠标的位置得到
Private Sub PanelMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim mypanle As Panel = CType(sender, Panel)
mypanle.Cursor = Cursors.SizeAll
If e.Button = Windows.Forms.MouseButtons.Left Then
x = e.X
y = e.Y
End If
End Sub
'如果鼠标放下,同时鼠标的位置被改变,移动panel位置
Private Sub PanelMouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim mypanel As Panel = CType(sender, Panel)
Dim picturename As String = mypanel.Name & "_p"
Dim mypicture As PictureBox = CType(Me.Controls(picturename), PictureBox)
If x <> 0 And y <> 0 Then
mypanel.Left = mypanel.Left + x
mypicture.Left = mypicture.Left + x
mypanel.Top = mypanel.Top + y
mypicture.Top = mypicture.Top + y
End If
x = 0
y = 0
End Sub
'动态创建两个控件,做测试
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mypanel As New Panel
mypanel.Name = "test"
mypanel.BackColor = Color.Blue
mypanel.Top = 100
mypanel.Left = 100
mypanel.Width = 100
mypanel.Height = 15
AddHandler mypanel.MouseUp, AddressOf PanelMouseUp
AddHandler mypanel.MouseMove, AddressOf PanelMouseMove
Dim mypic As New PictureBox
mypic.Name = mypanel.Name & "_P"
mypic.BackColor = Color.Black
mypic.Top = mypanel.Top
mypic.Left = mypanel.Left + mypanel.Width
mypic.Width = 3
mypic.Height = mypanel.Height
AddHandler mypic.MouseMove, AddressOf PictureBoxMouseMove
Me.Controls.Add(mypanel)
Me.Controls.Add(mypic)
End Sub
End Class
相关文章推荐
- Delphi实现运行时控件的拖动、改变大小等,并且做到与控件类型的解耦
- Delphi实现运行时控件的拖动、改变大小等,并且做到与控件类型的解耦
- 在运行时通过鼠标拖动移动控件位置及改变控件的大小
- 控件的鼠标拖动和改变大小实现的思考
- 在运行时通过鼠标拖动移动控件位置及改变控件的大小
- 控件的鼠标拖动和改变大小实现的思考
- 在运行时通过鼠标拖动移动控件位置及改变控件的大小
- C#如何在运行时通过鼠标拖动改变控件的大小
- delphi 在运行的EXE拖动控件及改变控件的大小
- (转)C#如何在运行时通过鼠标拖动改变控件的大小
- .net,C#如何在运行时通过鼠标拖动改变控件的大小
- C#实现窗体控件随窗体大小改变(包括字体大小) 修正版
- 运行时改变控件大小运行时移动控件MINICAR版
- C#实现控件随窗体拖动而自动缩放其大小
- .NET运行界面上,实现随意拖动控件的方法
- 利用C#更专业的实现运行时调整控件大小和位置
- js实现拖动改变层的大小(宽度)
- java实现控件的移动及使用鼠标改变控件大小
- [置顶] C#实现窗体拖动时各个控件同比自动放缩大小
- 运行时改变控件的大小(点击后立刻ReleaseCapture,然后计算位移,最后发消息改变位置)——最有趣的是TPanel其实也有窗口标题,因此可发HTCAPTION消息