我在c#窗口表单上做一个项目 我有一个DataGridView与数据库中的数据
现在我想在数据GridView中进行编辑,我有这个列调用Name,但我想验证,以便在用户编辑时,它只会键入字母,例如,在Name列中第1行有一个名字叫Rosy Chin,然后用户编辑到这个Rosy Ch11n ...它应该提示用户说只有字母表,我使用下面的代码,但它没有提示我那条消息...但是如果用户编辑这个4Rosy Chin ....它会出现提示信息......我能知道我错在哪里吗?
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
{
//int indicator;
int newInteger;
if (e.ColumnIndex == 1)
{
if (dataGridView1.Rows[e.RowIndex].IsNewRow) return;
String data = e.FormattedValue.ToString();
String validate= @"^[a-zA-Z]";
Regex nameAlphabet = new Regex(validate);
String nameGridView = data;
if(!(nameAlphabet.IsMatch(nameGridView )))
{
e.Cancel = true;
MessageBox.Show(@"Name must be in Alphabet!");
}
else
return;
}
}
答案 0 :(得分:2)
尝试修复您的RegEx:
^[a-zA-Z ]+$
说明
^ start of line
[a-zA-Z ] any letter or space
+ one or more
$ end of line
Good RegEx sandbox。
不允许只有空格:
^[A-Za-z][a-zA-Z ]+[A-Za-z]$
链接到sandbox。
答案 1 :(得分:0)
如果不按以下方式尝试
Regex nameAlphabet = new Regex(@"^[a-zA-Z\s]+$");
如果空格大于1
,或者如果文本框以空格开头,您可以根据需要提出必要的消息框,则可以通过检查文本框中的空格数来以编程方式执行此操作< / p>
在您验证的代码中尝试此操作
int cnt = 0;
while (TextBox1.Text.Contains(" "))
{
cnt++;
if (cnt > 1)
{
MessageBox.show("Only a space is allowed");
break;
}
}
以类似的方式,您可以测试textbox
是否以空格开头,如下所示
if(textbox.text.startswith(" "))
{
// Your message
}