我有一个多行文本框,它不应该接受字母,数字,换行符(回车键)和退格键。总之,textbox.Text
不应该是可编辑的。但我确实希望文本框接受两个快捷键 - 控制和控制+ R。我可以使文本框不可编辑的一种方法是将其设置为只读。但是,文本框不会接受任何按键。总之,我的快捷键(控制和控制+ R)不会工作(控制+ R)与只读方法。如何使多行文本框不接受Enter和Backspace
任何人都可以在这方面提供帮助。这就是我必须要做的。
我在这里可以做的一件事情不是让文本框为只读,然后限制可以在文本框中输入的字符(字母和数字)。使用此代码:
private void txtResult_KeyPress(object sender, KeyPressEventArgs e)
{
// only modifier keys, escape, enter, backspace etc is accepted now
e.Handled = !char.IsControl(e.KeyChar);
}
private void txtResult_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control == true)
{
if (e.KeyCode == Keys.R)
{
// do something
}
else
{
//do something
}
}
if (e.KeyCode == Keys.Escape)
{
//do something
}
}
使用此技术,我可以获得快捷方式(控制和控制+ R)工作。但是这种方法的问题在于Enter和Backspace键可以编辑文本框的文本。我如何特别限制从文本框中注册的Enter和Backspace键,但让Control和Escape?
这不处理问题中所要求的Esc键。它也不会阻止文本框被修改。由于您没有指出按键的R键是“已处理”,文本框控件仍然会将它们视为输入,并键入字母R. – 2011-04-12 14:09:48
谢谢。工作。我很感激。是的,由于您没有包含我想要的'Esc'功能,所以我会做这个小调整,就像@Cody Gray所说的那样。我想我可以编辑你的代码来包含它。再次感谢。 – nawfal 2011-04-12 15:56:18
@Cody Gray,是的,这种方法是有效的。文本框不会像你想象的那样得到字母R.是的,我的文本框仍然不是只读的。文本框被完全阻止被修改.. – nawfal 2011-04-12 16:06:11