C# 防止下划线“_&引用;在要添加的文本框内容的末尾
我与尼克(已知姓名)合作 当用户注册时,您必须输入您的刻痕,同样,它不能包含符号(下划线除外),只能包含数字和字母 我使用我的C# 防止下划线“_&引用;在要添加的文本框内容的末尾,c#,string,winforms,textbox,C#,String,Winforms,Textbox,我与尼克(已知姓名)合作 当用户注册时,您必须输入您的刻痕,同样,它不能包含符号(下划线除外),只能包含数字和字母 我使用我的文本框用户名的按键事件: private bool Handled = false; private void Username_KeyPress(object sender, KeyPressEventArgs e) { if (Char.IsLetterOrDigit(e.KeyChar)) this.Handled = false; else
文本框
用户名的按键
事件:
private bool Handled = false;
private void Username_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsLetterOrDigit(e.KeyChar)) this.Handled = false;
else
{
if (e.KeyChar == '\b') this.Handled = false; //Backspace key
else
{
if (e.KeyChar == '_' && !((TextBox)sender).Text.Contains("_") && ((TextBox)sender).Text.Length > 0) this.Handled = false;
else this.Handled = true;
}
}
e.Handled = Handled;
}
这段代码防止符号(与“u”不同),内容以“u”开头,并使用多个下划线“H_E_L_L_O”编写,但它们需要防止在结尾使用下划线,我的意思是:
允许:见鬼
预防:你好_
这可能吗
编辑:
我还使用了String.Last()
,但结果是一样的:
你不能这样做,除非你能读懂用户的心思:)毕竟,用户可能想把
Hell\u o
放在你的例子中,但要键入,他们首先需要键入“Hell\u”,所以你不能在这一点上阻止他们。您可能要做的最好的事情就是处理UserName控件上的“验证”事件
private void UserName_Validating(object sender, CancelEventArgs e) {
errorProvider1.SetError(UserName, "");
if (UserName.Text.EndsWith("_")) {
errorProvider1.SetError(UserName, "Stuff is wrong");
}
}
然后在你的“注册”按钮中点击或者其他什么,检查那个控件(或者你关心的任何控件)是否有错误 除非你能读懂用户的想法,否则你不能这样做:)毕竟,用户可能想像你的例子中那样输入
Hell\u o
,但要输入,他们首先需要输入“Hell\u”,所以你不能在那一点上阻止他们。您可能要做的最好的事情就是处理UserName控件上的“验证”事件
private void UserName_Validating(object sender, CancelEventArgs e) {
errorProvider1.SetError(UserName, "");
if (UserName.Text.EndsWith("_")) {
errorProvider1.SetError(UserName, "Stuff is wrong");
}
}
然后在你的“注册”按钮中点击或者其他什么,检查那个控件(或者你关心的任何控件)是否有错误 您可以编写一个以字符串字符结尾的正则表达式。将
if
子句中的SelectionStart
和TextLength
进行比较难道不能解决这个问题吗?this.Handled=false
?这不是e.Handled
?这是什么意思:“并在“H_e_L_L_O”下使用了多个脚本”“@LarsTech Handled是一个私有boolYou可以编写一个以字符串字符结尾的正则表达式。如果if
子句中的SelectionStart
和TextLength
进行比较,难道不能解决这个问题吗?this.Handled=false
?这不是e.Handled
?这是什么意思:“并且在”H_e_L_L_O“下使用了多个脚本”?@LarsTech Handled是一个私有bool不是最好使用String.Last()
而不是String.EndsWith()
?不是最好使用String.Last()
而不是String.EndsWith())
?