运行时拉伸和移动控件的类

Public Class Resize

' 移动了吗?

Private IsMoving As Boolean = False

' 控件最后的宽

Private ctrlLastWidth As Integer = 0

' 控件最后的高

Private ctrlLastHeight As Integer = 0

' 控件原来的宽

Private ctrlWidth As Integer

' 最后的左侧坐标

Private ctrlLastLeft As Integer

' 最后的顶部坐标

Private ctrlLastTop As Integer

' 控件原来的高

Private ctrlHeight As Integer

' 控件的左侧坐标

Private ctrlLeft As Integer

' 控件的顶部坐标

Private ctrlTop As Integer

' 光标的左侧坐标

Private cursorL As Integer

' 光标的顶部坐标

Private cursorT As Integer

'

Private Htap As Integer

Private Wtap As Integer

Private ctrlIsResizing As Boolean = False

' 控件的大小矩形

Private ctrlRectangle As System.Drawing.Rectangle = New System.Drawing.Rectangle()

Private ctrl As Control ' 操作的控件

Private frm As Form ' 控件的父亲窗体

' 构造函数

Public Sub New ( ByVal c As Control, ByVal frm As Form)

ctrl = c

Me .frm = frm

' 标题栏和横向滚动条以及边框的宽

Me .Htap = Me .frm.Height - Me .frm.ClientRectangle.Height

' 纵向滚动条和边框的宽

Me .Wtap = Me .frm.Width - Me .frm.ClientRectangle.Width

AddHandler ctrl.MouseDown, AddressOf MouseDown

AddHandler ctrl.MouseMove, AddressOf MouseMove

AddHandler ctrl.MouseUp, AddressOf MouseUp

End Sub

' 鼠标按下后的处理

Private Sub MouseDown( ByVal sender As Object , ByVal e As MouseEventArgs)

If frm Is Nothing Then

Return

End If

MessageBox.Show(e.Y.ToString)

MessageBox.Show(( Me .ctrl.Height - 10).ToString)

MessageBox.Show(e.X.ToString)

MessageBox.Show(( Me .ctrl.Width - 10).ToString)

' 设置第一次有效单击的范围

If e.X < Me .ctrl.Width - 10 OrElse e.Y < Me .ctrl.Height - 10 Then

Me .IsMoving = True

' 指定要绘制的虚线框的坐标(相对屏幕)

Me .ctrlLeft = Me .frm.DesktopLocation.X + Me .Wtap + Me .ctrl.Left

Me .ctrlTop = Me .frm.DesktopLocation.Y + Me .Htap + Me .ctrl.Top

本新闻共 3 页,当前在第 1 页 1 2 3

Published At
Categories with Web编程
Tagged with
comments powered by Disqus