将TextBox中的按键替换为另一个C#

时间:2016-09-01 10:49:25

标签: c# wpf winforms

如何从numpad替换按下的'小数点'键始终返回'。'独立于区域环境。我希望它仅适用于一个(特定)TextBox,而不是所有应用程序。
没有创造自己的控制就可以实现这一目标吗?

3 个答案:

答案 0 :(得分:2)

为了做到这一点,你只需要处理KeyDown事件,如果它是numpad十进制,则按下激活的密钥,然后只需发送你想要的新密钥。

这很简单,以下链接应该给你足够的指针来实际编写一些代码:

一旦你写了一些东西,你可以问一个关于你可能遇到的任何特定困难的新问题。

答案 1 :(得分:2)

这是一个可能的解决方案(很可能不是最好的解决方案,但应该工作的解决方案),如果按下小键盘上的小数点,则会向文本框添加.字符,如果{{1按下键,它仍然将,字符添加到文本框中。

,

private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Decimal) { e.SuppressKeyPress = true; textBox1.Text += "."; textBox1.SelectionStart = textBox1.Text.Length; textBox1.SelectionLength = 0; } } 可防止将按下的键发送到文本框。然后将所需的字符添加到文本框中。 SuppressKeyPressSelectionStart属性设置为将光标移动到文本框中字符串的末尾。

希望有所帮助

编辑

正如 cdkMoose 指出这种方法的缺陷是SelectionLength字符总是被添加到字符串的末尾,如果需要添加.字符串中的任何字符代码都可以像这样使用:

.

答案 2 :(得分:1)

请看this

您可以处理KeyDown事件,如果是,则在numpad取消事件中,并使用'。'发送新事件。