这是我的代码:
private void txtAdd_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsLetter(e.KeyChar)) && !(char.IsNumber(e.KeyChar)) && !(char.IsWhiteSpace(e.KeyChar)))
{
e.Handled = true;
}
}
它允许我输入字母,数字和空格,但它不允许我做退格。请帮帮我。
答案 0 :(得分:32)
我喜欢使用!
Char.IsControl(e.KeyChar),以便免除所有“控制”字符(如退格键和剪贴板键盘快捷键)。
如果你只是想检查退格,你可以可能逃脱:
if (e.KeyChar == (char)8 && ...)
答案 1 :(得分:17)
我使用以下两个段:
这个用于将文本框限制为仅整数,但允许控制键:
if (Char.IsDigit(e.KeyChar)) return;
if (Char.IsControl(e.KeyChar)) return;
e.Handled = true;
这个用于限制文本框加倍,允许一个'。'只有,并允许控制键:
if (Char.IsDigit(e.KeyChar)) return;
if (Char.IsControl(e.KeyChar)) return;
if ((e.KeyChar == '.') && ((sender as TextBox).Text.Contains('.') == false)) return;
if ((e.KeyChar == '.') && ((sender as TextBox).SelectionLength == (sender as TextBox).TextLength)) return;
e.Handled = true;
答案 2 :(得分:5)
你必须在你的句子中添加!(char.IsControl(e.KeyChar))并且那就是它。
private void txtNombre_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsLetter(e.KeyChar)) && !(char.IsNumber(e.KeyChar)) && !(char.IsControl(e.KeyChar)) && !(char.IsWhiteSpace(e.KeyChar)))
{
e.Handled = true;
}
}
答案 3 :(得分:3)
KeyPress事件不会引发退格键。所以你需要在KeyDown或KeyUp事件中捕获它并设置SuppressKeyPress属性为true以防止退格键更改文本框中的文本:
private void txtAdd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
e.SuppressKeyPress = true;
}
}
答案 4 :(得分:1)
来自文档:
KeyPress事件不是由非字符键引发的;但是,非字符键确实会引发KeyDown和KeyUp事件。
答案 5 :(得分:0)
private void KeyPressNameSurname(object sender, KeyPressEventArgs e)
{
if (char.IsPunctuation(e.KeyChar) || char.IsSymbol(e.KeyChar) || char.IsDigit(e.KeyChar) )
{
e.Handled = true;
myTextBox.Text = "Not Valid";
myTextBox.Visible = true;
}
else
{
myTextBox.Visible = false;
}
}
答案 6 :(得分:0)
对于您的问题,请按回退键尝试此操作
e.KeyChar == ((char)Keys.Back)
答案 7 :(得分:0)
这可能对您有所帮助
if(Keys.KeyCode==Keys.Back){
e.Handled =true;
}
答案 8 :(得分:-1)
private void Keypressusername(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsLetter(e.KeyChar));
if (char.IsControl(e.KeyChar))
{
e.Handled = !(char.IsControl(e.KeyChar));
}
if (char.IsWhiteSpace(e.KeyChar))
{
e.Handled = !(char.IsWhiteSpace(e.KeyChar));
}
}