【问题标题】:VB.Net get text after keypressVB.Net在按键后获取文本
【发布时间】:2014-06-19 14:05:01
【问题描述】:

我正在对文本框按键事件进行一些自定义验证。

当用户按下某个键时,我想找出在该特定键按下后将存在的文本。

例如。如果文本框当前包含 12.4 并且用户按下“6”键,我想知道之后的文本是什么。我尝试将e.KeyChar 附加到 textbox.text 的末尾,但是如果用户突出显示文本框的某些部分然后按下某个键,则会出现问题。

是否有办法检测按键后实际存在的值?

【问题讨论】:

  • .TextChanged 事件呢?与其试图预测未来,不如评估它的实际情况。或者只是让 TB 成为用户沙箱,直到他们按下 OK/Send/Submit/Done... 尝试验证每个按键几乎不值得付出努力
  • 我无法使用 textchanged 事件。这是针对金额字段的,如果用户不小心按字母键,我希望它被忽略。还有一些其他的验证......
  • ...然后使用 numericupdown 控件或 maskededit 控件
  • 此文本框托管在 datagridview 上,我尝试将数字向上托管,但遇到了一些问题,我不记得到底是什么问题。但是文本框让我可以灵活地做任何事情,这就是我使用它的原因..
  • GoTo 1:使用 TextChanged 事件,如果您不喜欢新内容,请将其回滚。我认为这也将捕获 Ctrl-V 哪个按键不会

标签: vb.net


【解决方案1】:

您必须根据当前插入符号的位置分解当前文本,检查传入的文本,然后重新组合文本:

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) _
                                                Handles TextBox1.KeyPress
  Dim part1 As String = TextBox1.Text.Substring(0, TextBox1.SelectionStart)
  Dim part2 As String = TextBox1.Text.Substring(TextBox1.SelectionStart + _
                                                TextBox1.SelectionLength)
  Dim character As String = String.Empty
  If Char.IsDigit(e.KeyChar) Then
    character = e.KeyChar.ToString
    Dim result As String = part1 & character & part2
    'Do something with result...
  Else
    e.Handled = True
  End If
End Sub

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多