【问题标题】:How to detect position of last pressed key in a string in C#?如何在 C# 中检测字符串中最后按下的键的位置?
【发布时间】:2012-04-02 07:53:49
【问题描述】:

我在 datagridview 中输入数据。

假设我在单元格中输入了678.56。现在,如果我在 678 之后再次按数字 6,

我想知道最后按下的键在字符串中的位置。 Text.IndexOf(e.KeyChar) 给了我位置 0(因为也有 6)。

但我需要知道当前按键的位置。我正在使用KeyPress 事件。

编辑:我正在使用从 datagridview 的单元格中获取的字符串值。它不是文本框。我正在创建一个事件处理程序作为 KeyPress。

【问题讨论】:

  • 你想达到什么目的?也许有更好的解决方案?
  • 你调试了吗?您在 e.KeyChar 属性中获得的 KeyChar 是什么?
  • @zenwalker 我在 e.KeyChar 中获得了 6 的 ascii 代码。但是 IndexOf(e.KeyChar) 给我的值是 0,因为在 0 位置也有 6。

标签: c# winforms string position


【解决方案1】:

查看TextBox.SelectionStart之前的字符。

【讨论】:

  • 非常感谢。您的建议帮助我解决了我的问题。
【解决方案2】:

您可以在 KeyPress 活动中使用它:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
        int position = textBox1.SelectionStart;
}

【讨论】:

    【解决方案3】:

    尝试使用 KeyRelease 事件,此时 e.KeyChar 将返回按下的键的值(在本例中为释放)。

    【讨论】:

    • 由于程序的其他验证,我必须使用 KeyPress 事件。
    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多