如果用户没有在文本框中输入任何内容,我正在尝试验证表单中的文本框没有空字符串,因此如果文本框为空,则用户必须输入值,我的代码是这样的,但它无法正常工作
public int TextBox_Validation(string sender)
{
try
{
if (string.IsNullOrEmpty(sender))
{
MessageBox.Show("Please enter a value");
}
}
catch
{
int num = int.Parse(sender);
return 0;
}
return 0;
}
答案 0 :(得分:2)
发件人通常只指发送对象,因此请检查您是否正在发送文本框的文本而不是文本框的引用。
此外,您总是返回零。将您的代码更改为以下内容。如果验证通过,您将返回1
,如果失败则返回0
。顺便说一下,您应该使用boolean
而不是int
。我在下面注释了一行,因为在这种情况下它没有做任何有建设性的事情:
try
{
if (string.IsNullOrEmpty(sender))
{
MessageBox.Show("Please enter a value");
return 0;
}
}
catch
{
//int num = int.Parse(sender);
return 0;
}
return 1;
我建议您将方法更改为以下内容。您不需要try {} catch {}
,因为isNullOrEmpty
涵盖了唯一的潜在空问题:
bool ValidateText(string Text)
{
if (string.IsNullOrEmpty(Text))
{
MessageBox.Show("Please enter a value");
return false;
}
return true;
}
答案 1 :(得分:1)
public bool TextBox_Validation(string sender) {
return !string.IsNullOrEmpty(sender);
}
if(TextBox_Validation(textbox1.Value)) {
//OK
} else {
MessageBox.Show("Please enter a value");
//ETC
}
答案 2 :(得分:1)
你没有抛出异常,所以你不会进入catch块。
public int TextBox_Validation(string value)
{
int integer = 0;
if( string.IsNullOrEmpty( value ) )
{
MessageBox.Show( "Please enter a value" );
}
else
{
int.TryParse( value, out integer );
}
return integer;
}
答案 3 :(得分:1)
try-catch块没用,方法应该返回bool并且不应该显示任何消息。在一个方法中没有相关的东西(显示消息,返回一些无意义的数字等)是一种不好的做法。如果它是验证方法,它应该只告诉你一件事 - 传递的字符串是否有效(在你的情况下只是一个bool),这就是全部。您应该考虑在另一种方法中向用户显示消息。还有一件事 - 取决于您使用的技术,它可能有更好的验证支持(WF中的验证,WPF中的验证规则等),使用它们,而不是处理一些输入事件
答案 4 :(得分:1)
你的算法不正确。 catch
块用于捕获先前try
块中发生的错误。在这种情况下,我没有看到发生运行时错误因此可能不需要try / catch块,但我会留下例如缘故。此外,您的函数不提供程序知道它是否为空的方法。如果为空则可以返回0,否则返回1。或者返回布尔值true或false。也许像这样的函数会更好:
public bool TextBox_Validation(string sender)
{
try
{
if (string.IsNullOrEmpty(sender))
{
MessageBox.Show("Please enter a value");
return false;
}
else
return true;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
}
答案 5 :(得分:1)
您可以尝试这样的事情
if (String.IsNullOrEmpty(txtTextBox.Text))
{
MessageBox.Show("Enter Value Please.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
//whatever u need to do
}