【问题标题】:Inserting text into a textbox at the cursor position VB将文本插入到光标位置 VB 的文本框中
【发布时间】:2012-06-15 09:38:43
【问题描述】:

我正在尝试找出如何将字符串“End”插入到特定光标点的文本框中? (“???”在下面的代码中)

正如您在下面的代码中看到的,当用户在文本框中的键盘上单击返回时,就会发生这种情况。

我有代码来获取存储为整数“intcurrentcolumn”的游标索引。

谢谢

 Private Sub Enter_Click(ByVal Sender As System.Object, ByVal k As System.Windows.Forms.KeyEventArgs)

     Dim MyTextBox As TextBox = sender
     Dim intindex As Integer
     Dim intcurrentcolumn As Integer
     Dim NewString As String

     If k.KeyCode = Keys.Return Then

        k.SuppressKeyPress = True

        intindex = MyTextBox.SelectionStart
        intcurrentColumn = intindex - MyTextBox.GetFirstCharIndexFromLine(intcurrentLine)

        If intindex = MyTextBox.Text.Length Then

         NewString = MyTextBox.Text & "<End>"

        Else: 

        ???

        End If

        MyTextBox.Text = NewString

        'Sets cursor to end of textbox
        MyTextBox.Select(MyTextBox.Text.Length, 0)

      End If

提前致谢!

【问题讨论】:

    标签: vb.net cursor-position


    【解决方案1】:

    String.Insert 方法有效,但会重置光标位置,这通常不是您想要的(尽管您的代码无论如何都会重置它)。一个更好的选择是只设置SelectedText:

    MyTextBox.SelectedText = "<End>"
    

    在您的情况下,在您插入字符串 "&lt;End&gt;" 之前,所选文本的长度仅为 0。

    这也使得If…Else 区别变得不必要。

    Private Sub Enter_Click(ByVal Sender As Object, ByVal k As System.Windows.Forms.KeyEventArgs)
        If k.KeyCode = Keys.Return Then
            Dim MyTextBox As TextBox = DirectCast(sender, TextBox)
            MyTextBox.SelectedText = "<End>"
            MyTextBox.SelectionStart = MyTextBox.Text.Length
            k.SuppressKeyPress = True
        End If
    End Sub
    

    请注意,我还修复了您代码中的一个错误:将sender 分配给MyTextBox 需要显式转换!如果您的原始代码已编译,您应该(!)设置Option Strict On。这对于改进编译器的类型检查必不可少,并且应该被视为无条件要求1

    此外,不要在使用变量之前声明它们。在您第一次为它们赋值时,尽可能在最晚的时候声明它们。这使得程序状态更易于跟踪,并且通常会导致代码更短。


    1(除非您经常使用 COM 后期绑定,在这种情况下,您可以基于每个文件禁用它)。

    【讨论】:

    • +1 啊!,我一直在寻找那种避免插入的快捷方式,但找不到合适的方法。这真是太好了。
    【解决方案2】:

    String.Insert方法,类似这样的

    MyTextBox.Text = MyTextBox.Text.Insert(intindex, "<End>")
    

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 2011-07-09
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多