如何使用命令按钮在文本框中的现有文本中插入新文本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用命令按钮在文本框中的现有文本中插入新文本?相关的知识,希望对你有一定的参考价值。

我有一个自定义计算器按下按钮时,将其标题插入文本框。

Private Sub CmdBtn_Click()
   Me.TextBox.Value = Me.TextBox.Value & " " & CmdBtn.Caption
End Sub

它工作正常。但是,使用此方法无法在已存在的文本中插入新文本。例如,如果当前文本是“abc”,那么我想在“a”和“bc”之间输入“x”以给出“axbc”的最终结果。我将光标放在应放置新文本的所需位置。有人知道如何实现它?谢谢,

答案

离开文本框时使用变量存储光标位置:

Option Compare Database
Option Explicit

Private LastPosition    As Long

Private Sub CmdBtn_Click()

    Dim Text    As String

    Text = Me!TargetBox.Value

    ' Insert source text at the stored position.
    Me!TargetBox.Value = Left(Text, LastPosition) & Me!SourceBox.Value & Mid(Text, LastPosition + 1)

End Sub

Private Sub UserName_LostFocus()

    ' Store cursor position.
    LastPosition = Me!UserName.SelStart

End Sub
另一答案

下面的解决方案非常适合在TextBox的任何位置输入文本。如果有人有比这更好的解决方案,请告诉我。

Private LastPosition as Long
Private Text as String

Private Sub TextBox_LostFocus()
        If LastPosition = 0 and IsNull(Me!TextBox.Value) Then
              Me!TextBox = " " + Me.ActiveControl.Caption
              LastPosition = LastPosition + Len(Me.ActiveControl.Caption)
        ElseIf 
              LastPosition >= AND Not IsNull(Me!TextBox.Value) Then
              Text = Me!TextBox.Value

              Me!TextBox.Value = Left( Text, LastPosition) & " " & _
              Me.ActiveControl.Caption & Mid(Text, LastPosition + 1)

              LastPosition = LastPosition + Len(Me.ActiveControl.Caption)

        Else  
              Me!TextBox.Value = Me!TextBox.Value + " " + Me.ActiveControl.Caption

        End If

 End Sub

以上是关于如何使用命令按钮在文本框中的现有文本中插入新文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何选择文本框中的文本,插入符号位于选择的开头?

如何禁用 IE10 插入文本框的清除按钮?

如何让word文本框中的文字垂直上下居中

如何将文本框上键入的数据从模态插入数据库

如何将文本框中的日期插入数据库

使用 itextsharp 在现有 pdf 中插入文本