如何从numpad替换按下的'小数点'键始终返回'。'独立于区域环境。我希望它仅适用于一个(特定)TextBox,而不是所有应用程序。
没有创造自己的控制就可以实现这一目标吗?
答案 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;
}
}
可防止将按下的键发送到文本框。然后将所需的字符添加到文本框中。 SuppressKeyPress
和SelectionStart
属性设置为将光标移动到文本框中字符串的末尾。
希望有所帮助
编辑:
正如 cdkMoose 指出这种方法的缺陷是SelectionLength
字符总是被添加到字符串的末尾,如果需要添加.
字符串中的任何字符代码都可以像这样使用:
.
答案 2 :(得分:1)
请看this。
您可以处理KeyDown
事件,如果是,则在numpad取消事件中,并使用'。'发送新事件。