拖放后锁定文本框
Lock Textboxes after drag and drop
我的用户窗体中有 20 个文本框,它们都被锁定,一个是文本框,另一个是空框。我想将文本从一个框拖到另一个框。我用文本解锁文本框并将文本拖到另一个文本框并将其放在那里。之后我想再次锁定两个文本框。
第一个问题是文本没有被删除而是被复制了,第二个问题是我真的不知道如何在删除文本后再次锁定文本框。
Private Sub TextBox1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
TextBox1.Locked = False
Effect = 2
End Sub
Private Sub TextBox2_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
TextBox2.Locked = False
End Sub
Private Sub TextBox1_AfterUpdate()
TextBox1.Locked = True
End Sub
Private Sub TextBox2_AfterUpdate()
TextBox2.Locked = True
End Sub
The first problem is that the text is not dropped but copied
the second is that I really don't know how to lock the textboxes again after dropping the text.
这是你正在尝试的吗?我以 2 个文本框为例。随意将其相应地应用到您的项目中。下面示例中的两个文本框都被锁定。您不需要解锁 TextBox1
.
Option Explicit
Dim ctl As Control
Private Sub UserForm_Initialize()
TextBox1.Text = "Sid"
TextBox1.DragBehavior = fmDragBehaviorEnabled
TextBox2.DragBehavior = fmDragBehaviorEnabled
End Sub
Private Sub TextBox1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, _
ByVal Data As MSForms.DataObject, ByVal X As Single, _
ByVal Y As Single, ByVal DragState As MSForms.fmDragState, _
ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Set ctl = TextBox1
TextBox2.Locked = False
End Sub
Private Sub TextBox2_AfterUpdate()
If Not ctl Is Nothing Then ctl.Text = ""
TextBox2.Locked = True
End Sub
在行动
我的用户窗体中有 20 个文本框,它们都被锁定,一个是文本框,另一个是空框。我想将文本从一个框拖到另一个框。我用文本解锁文本框并将文本拖到另一个文本框并将其放在那里。之后我想再次锁定两个文本框。 第一个问题是文本没有被删除而是被复制了,第二个问题是我真的不知道如何在删除文本后再次锁定文本框。
Private Sub TextBox1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
TextBox1.Locked = False
Effect = 2
End Sub
Private Sub TextBox2_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
TextBox2.Locked = False
End Sub
Private Sub TextBox1_AfterUpdate()
TextBox1.Locked = True
End Sub
Private Sub TextBox2_AfterUpdate()
TextBox2.Locked = True
End Sub
The first problem is that the text is not dropped but copied
the second is that I really don't know how to lock the textboxes again after dropping the text.
这是你正在尝试的吗?我以 2 个文本框为例。随意将其相应地应用到您的项目中。下面示例中的两个文本框都被锁定。您不需要解锁 TextBox1
.
Option Explicit
Dim ctl As Control
Private Sub UserForm_Initialize()
TextBox1.Text = "Sid"
TextBox1.DragBehavior = fmDragBehaviorEnabled
TextBox2.DragBehavior = fmDragBehaviorEnabled
End Sub
Private Sub TextBox1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, _
ByVal Data As MSForms.DataObject, ByVal X As Single, _
ByVal Y As Single, ByVal DragState As MSForms.fmDragState, _
ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Set ctl = TextBox1
TextBox2.Locked = False
End Sub
Private Sub TextBox2_AfterUpdate()
If Not ctl Is Nothing Then ctl.Text = ""
TextBox2.Locked = True
End Sub
在行动