如何让TextBox
只接受带空格的字母字符?
答案 0 :(得分:17)
您可以尝试处理文本框的KeyPress
事件
void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
}
另外说如果你想删除一些文本,允许退格,这对你来说应该是完全正常的
修改强>
上面的代码不适用于我认为你必须使用TextChanged
事件的字段中的粘贴,但是当你必须删除不正确的字符或突出显示它时会更复杂一些并将光标放在用户进行更正的位置。或者,一旦用户输入完整的文本并关闭控件,您就可以验证。
答案 1 :(得分:15)
您可以使用以下代码段:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z ]"))
{
MessageBox.Show("This textbox accepts only alphabetical characters");
textBox1.Text.Remove(textBox1.Text.Length - 1);
}
}
答案 2 :(得分:5)
private void textbox1_KeyDown_1(object sender, KeyEventArgs e)
{
if (e.Key >= Key.A && e.Key <= Key.Z)
{
}
else
{
e.Handled = true;
}
}
答案 3 :(得分:4)
最简单的方法是处理TextChangedEvent并检查输入的内容:
string oldText = string.Empty;
private void textBox2_TextChanged(object sender, EventArgs e)
{
if (textBox2.Text.All(chr => char.IsLetter(chr)))
{
oldText = textBox2.Text;
textBox2.Text = oldText;
textBox2.BackColor = System.Drawing.Color.White;
textBox2.ForeColor = System.Drawing.Color.Black;
}
else
{
textBox2.Text = oldText;
textBox2.BackColor = System.Drawing.Color.Red;
textBox2.ForeColor = System.Drawing.Color.White;
}
textBox2.SelectionStart = textBox2.Text.Length;
}
如果您愿意,这是一个免费的正则表达式版本。这将使文本框在输入错误时闪烁。 请注意,它似乎也支持粘贴操作。
答案 4 :(得分:4)
将Text_KeyPress事件中的代码写为
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsLetter(e.KeyChar))
{
e.Handled = true;
}
}
答案 5 :(得分:3)
这个工作绝对正常......
private void manufacturerOrSupplierTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsControl(e.KeyChar) || char.IsLetter(e.KeyChar))
{
return;
}
e.Handled = true;
}
答案 6 :(得分:3)
此解决方案使用正则表达式,不允许将无效字符粘贴到文本框中并保持光标位置。
class
注意:textBox1_TextChanged递归调用。
答案 7 :(得分:2)
if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z]+$"))
{
}
else
{
textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
MessageBox.Show("Enter only Alphabets");
}
请试试这个
答案 8 :(得分:1)
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= '0' && e.KeyChar <= '9')
e.Handled = true;
else
e.Handled = false;
}
答案 9 :(得分:1)
试试这个
private void tbCustomerName_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back||e.KeyChar==(char)Keys.Space);
}
它允许空格
答案 10 :(得分:1)
您可以尝试按下按键事件时提醒的代码
private void tbOwnerName_KeyPress(object sender, KeyPressEventArgs e)
{
//===================to accept only charactrs & space/backspace=============================================
if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space))
{
e.Handled = true;
base.OnKeyPress(e);
MessageBox.Show("enter characters only");
}
答案 11 :(得分:0)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsLetter(e.KeyChar) &&
(e.KeyChar !='.'))
{
e.Handled = true;
MessageBox.Show("Only Alphabets");
}
}
答案 12 :(得分:0)
这是我的解决方案,它按计划运作:
string errmsg = "ERROR : Wrong input";
ErrorLbl.Text = errmsg;
if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space))
{
ErrorLbl.Text = "ERROR : Wrong input";
}
else ErrorLbl.Text = string.Empty;
if (ErrorLbl.Text == errmsg)
{
Nametxt.Text = string.Empty;
}
答案 13 :(得分:0)
在文本框的KeyPress事件中尝试以下代码
yarn add @google/cloud-debug
yarn add v0.23.4
[1/4] Resolving packages...
warning @google/cloud-debug@0.9.3: This module has been renamed to @google-cloud/debug-agent, please use that instead.
warning @google/cloud-debug > google-auth-library > request > node-uuid@1.4.8: Use uuid module instead`
答案 14 :(得分:0)
就字符限制而言,这可以正常工作,如果不是C或L,关于错误消息的任何建议都会在我的代码中提示
私有Sub TXTBOX_TextChanged(发送者为System.Object,e作为System.EventArgs)处理TXTBOX.TextChanged
Dim allowed As String = "C,L"
For Each C As Char In TXTBOX.Text
If allowed.Contains(C) = False Then
TXTBOX.Text = TXTBOX.Text.Remove(TXTBOX.SelectionStart - 1, 1)
TXTBOX.Select(TXTBOX.Text.Count, 0)
End If
Next
End Sub
答案 15 :(得分:0)
为我工作,即使不是最简单的工作。
private void Alpha_Click(object sender, EventArgs e)
{
int count = 0;
foreach (char letter in inputTXT.Text)
{
if (Char.IsLetter(letter))
{
count++;
}
else
{
count = 0;
}
}
if (count != inputTXT.Text.Length)
{
errorBox.Text = "The input text must contain only alphabetic characters";
}
else
{
errorBox.Text = "";
}
}