2016-06-08 49 views
1

我想对文本框进行验证,当它为空时不会提交。它的工作原理是当有空白时它不会提交,但当我还没有在文本框上输入任何内容时仍然提交。不要提交空文本框c#

下面是C#代码

private void button1_Click(object sender, EventArgs e) 
{ 
    Regex pattern = new Regex("^[a-zA-Z]{0,8}$"); 
    if (pattern.IsMatch(textBox1.Text)) 
    { 
     button1.Text = "Submitted"; 
     button1.Enabled = false; 
     string name = textBox1.Text; 
     int ver = 2013; 
     MessageBox.Show("Hello " + name + "! Welcome to visual c# " + ver.ToString(), "Greeting"); 
    } 
    else if (string.IsNullOrEmpty(textBox1.Text) || textBox1.Text == "") 
    { 
     MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
    } 
    else 
    { 
     MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
    } 
} 
+0

这是ASP.NET或WinForms的?在这种情况下什么是“提交”? – Dai

+0

尝试切换你的IF语句。将检查空白框放在第一个if,并将检查匹配放在else中,如果 – Mark

+0

'Click'事件使用按钮注册,则不管文本框内容如何,​​都会触发事件。 –

回答

1

重新形成的条件是这样

Regex pattern = new Regex("^[a-zA-Z]{0,8}$"); 
if (string.IsNullOrEmpty(textBox1.Text)) 
{ 
    MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
} 
else if (pattern.IsMatch(textBox1.Text)) 
{ 
    button1.Text = "Submitted"; 
    button1.Enabled = false; 
    string name = textBox1.Text; 
    int ver = 2013; 
    MessageBox.Show("Hello " + name + "! Welcome to visual c# " + ver.ToString(), "Greeting"); 
} 
else 
{ 
    MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
} 
+0

感谢它的工作 – Dren

1

RegEx语句允许空值。将0更改为1,{0,8},并删除捕获空值的else if块(值不可能在TextBox上)。

Regex pattern = new Regex("^[a-zA-Z]{1,8}$"); 
if (pattern.IsMatch(textBox1.Text)) 
{ 
    button1.Text = "Submitted"; 
    button1.Enabled = false; 
    string name = textBox1.Text; 
    int ver = 2013; 
    MessageBox.Show("Hello " + name + "! Welcome to visual c# " + ver.ToString(), "Greeting"); 
} 
else 
{ 
    MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
} 
+0

感谢它的工作。 – Dren

0

我会建议先检查空文本,然后检查正则表达式,因为正则表达式允许0到8个字符。

private void button1_Click(object sender, EventArgs e) 
{ 
    if (string.IsNullOrEmpty(textBox1.Text) || textBox1.Text == "") { 
     MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
    } else { 
     Regex pattern = new Regex("^[a-zA-Z]{0,8}$"); 
     if (pattern.IsMatch(textBox1.Text)) 
     { 
      button1.Text = "Submitted"; 
      button1.Enabled = false; 
      string name = textBox1.Text; 
      int ver = 2013; 
      MessageBox.Show("Hello " + name + "! Welcome to visual c# " + ver.ToString(), "Greeting"); 
     } 
     else 
     { 
      MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
     } 
    } 
} 

如果它应该是正好是8,你需要在你的正则表达式的{0,8}部分更改为{8},你可以留下你的代码的其余部分究竟如何是。

0

试试这个

else if (string.IsNullOrWhiteSpace(textBox1.Text)) 
{ 
    MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
} 
0

您可以使用TRIM()丢弃空白

private void button1_Click(object sender, EventArgs e) 
{ 
    Regex pattern = new Regex("^[a-zA-Z]{0,8}$"); 
    if (pattern.IsMatch(textBox1.Text)) 
    { 
     button1.Text = "Submitted"; 
     button1.Enabled = false; 
     string name = textBox1.Text; 
     int ver = 2013; 
     MessageBox.Show("Hello " + name + "! Welcome to visual c# " + ver.ToString(), "Greeting"); 
    } 
    else if (string.IsNullOrEmpty(textBox1.Text.Trim()) || textBox1.Text == "") 
    { 
     MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
    } 
    else 
    { 
     MessageBox.Show("Please type a valid 8 character string on the textbox!"); 
    } 

}