【问题标题】:moving in a text box with the arrow key使用箭头键在文本框中移动
【发布时间】:2014-07-22 19:28:11
【问题描述】:

当在文本框中选择字符时,我正在尝试复制 Microsoft 记事本应用程序,光标位于选择的开头,我开始按右箭头键。

每个右箭头 KeyDown 都会减少选择长度,直到选择长度为零。

我的问题,从这一点开始,我现在如何使角色被选中并继续向右移动光标?

【问题讨论】:

  • 从 Right Arrow KeyPress (Not KeyDown) 有一个 Sub 触发器,取消选择被选中的第一个字符。你几乎回答了你自己的问题..
  • 这不是也只有在按下 shift 键时才有效吗?在记事本中有效的内容应该在文本框中有效。应将您的问题标记为 Web、WinForms、WPF 等。
  • 是的,必须按下 Shift 键。按键事件定义为:
  • onkeypress 事件处理程序处理按下字母数字键时发生的事件。箭头键不是字母数字键。在哪里可以找到使用 Keypress、keydown、keyup 的文档和示例?
  • 我暗示的是,它应该“按原样”工作,而无需添加任何代码。我不清楚问题是什么。

标签: vb.net textbox


【解决方案1】:

正如其他人所说,这应该已经有效。无需复制,只需在按右箭头键时按住 shift 键。

要为所选文本提供一些逻辑,您可以使用事件 SelectionChanged 并且选中的文本是exampleTextBox.SelectedText;

还要注意.. 当鼠标选择文本时也会触发。

【讨论】:

    【解决方案2】:
      Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
            If e.KeyValue = 37 Then
                TextBox1.Location = New Point(TextBox1.Location.X - 20, TextBox1.Location.Y)
            End If
            If e.KeyValue = 38 Then
                TextBox1.Location = New Point(TextBox1.Location.X, TextBox1.Location.Y - 20)
            End If
            If e.KeyValue = 39 Then
                TextBox1.Location = New Point(TextBox1.Location.X + 20, TextBox1.Location.Y)
            End If
            If e.KeyValue = 40 Then
                TextBox1.Location = New Point(TextBox1.Location.X - 20, TextBox1.Location.Y + 20)
            End If
        End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 2011-04-06
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多