gpt4 book ai didi

vb.net - vbnet 对象拖动/调整大小代码

转载 作者:行者123 更新时间:2023-12-04 04:47:49 33 4
gpt4 key购买 nike

我写了一些代码来在“拖动模式”中拖动和调整表单上的任何文本框的大小 这是正在发生的事情的 gif,而不是正确拖动文本框,

img

代码:

#Region "Texbox Dragging"
Private txt As TextBox
Private txtptX, txtptY As Integer
Private txtdrag As Boolean
Private txtresize As Boolean
Private Sub txt_MouseLeave(sender As Object, e As EventArgs)
Me.Cursor = Cursors.Arrow
End Sub

Private Sub txt_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If DragMode = True Then
If e.Button = MouseButtons.Left Then
txtdrag = True
txtresize = True
txt = CType(sender, TextBox)
txtptX = e.X : txtptY = e.Y
End If
End If
End Sub

Private Sub txt_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

If txtdrag = True Then
txt.Location = New Point(txt.Location.X + e.X - txtptX, txt.Location.Y + e.Y - txtptY)
Me.Refresh()
txtdrag = True
End If
If txtresize = True Then
txtdrag = False
If txt.Cursor = Cursors.Cross Then
txt.Width = e.X
txt.Height = e.Y
Else
If e.X >= txt.Width - 10 Then
txt.Cursor = Cursors.Cross
Else
txt.Cursor = Cursors.IBeam
End If

If e.Y >= txt.Height - 10 Then
txt.Cursor = Cursors.Cross
Else
txt.Cursor = Cursors.IBeam
End If
End If
End If
End Sub

Private Sub txt_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
txt = CType(sender, TextBox)
If txt.Cursor = Cursors.Cross Then
txt.Cursor = Cursors.IBeam
End If

txtdrag = False
txtresize = False
End Sub
#End Region

我很抱歉我是一个乱七八糟的编码员,但这是关于第 12 次尝试,我正在尽一切努力使它工作......
  • 他们都独立工作得很好,但我遇到了这个奇怪的错误,当他们在一起时我只能拖动 0.25 秒...
  • 最佳答案

    不能同时执行两种操作(调整大小和移动)(在 MouseMove 方法中):拖动部分(顶部的部分)与调整大小的部分重叠。另一方面,您不希望两个操作同时发生(用户如何通过单击和移动来处理调整大小和重新定位?)。您必须设置进一步的条件以允许两个功能并行工作;例如:双击 txt .

    全局标志:

    Dim nowDragging As Boolean = True

    双击事件为这些分配正确的值:
    Private Sub txt_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles txt.MouseDoubleClick
    nowDragging = Not nowDragging
    End Sub

    更新 MouseMove为他们考虑:
    If txtdrag = True And nowDragging Then 
    '...
    If txtresize = True And Not nowDragging Then
    '..

    此代码默认执行拖动;如果用户双击 txt ,此功能将转换为调整大小(等等)。这是一种简单的方法,只需了解基本思想:启用一种从一个功能转移到另一个功能的方法。

    PS:显示您的确切问题的好方法。

    关于vb.net - vbnet 对象拖动/调整大小代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17916111/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com