2014-03-12 97 views
0

我正在尝试创建车牌生成器。无论何时运行,它都会创建一个随机车牌。但是,如果没有输入姓名,我需要停止程序继续生成车牌,就像暂停它,直到输入所有信息。我知道我需要一个返回函数,但我不知道如何使用它。以下是目前为止的代码:如何停止运行程序

if (string.IsNullOrWhiteSpace(NameTextBox.Text)) 
{ 
    userAnswer = MessageBox.Show("Please enter a valid name for the motorist", "Error Message", MessageBoxButtons.YesNo); 

    if (userAnswer == DialogResult.No) 
    { 
     Application.Exit(); 
    } 

    sb.Append(currentTime); 
    ActivityrichTextBox.Text = ActivityrichTextBox.Text + sb.ToString(); 

    sb.Clear(); 
    sb.Append("**Error** failed to enter a valid name"); 
    ActivityrichTextBox.Text = ActivityrichTextBox.Text + " " + sb.ToString() + Environment.NewLine; 

    sb.Clear(); 

我知道如果没有输入名称,它会在某处停止。

+6

添加'YesNo'对话框在这里并不直观。把它做成一个“好”的盒子。 – sircapsalot

+4

'Progam:'“请输入一个名字。” '用户:'“不!” = P –

+0

您也许还想使用这个组件: http://msdn.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx 有很多使用它的例子。 – FelProNet

回答

1

我假设你正在Win Form中做它。如果是这样,那么你不需要暂停程序,你可以使用事件来处理你的需求。制作一个按钮,附加一个点击事件。一旦用户点击该按钮,检查名称文本框是否为空,如果是,则显示错误消息,如果不是则继续调用return;

3

好的,我会给你一个模式,因为你的问题似乎没有很好的思考。基本上我知道你想在触发某种行为时验证用户输入,比方说,按下一个按钮。这通常是这样的:

public void btnButton_Clicked(object sender, EventArgs e) 
{ 
    if (String.IsNullOrWhiteSpace(textBox.Text)) 
    { 
     MessageBox.Show("You did not enter text!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     textBox.Focus(); 
     return; // <=== This exits the btnButton_Clicked method until the button is clicked again 
    } 

    // Do stuff here if text *was* entered 
} 

所以你的情况,这将是这样的:

if (string.IsNullOrWhiteSpace(NameTextBox.Text)) 
{ 
    MessageBox.Show("Please enter a valid name for the motorist", "Error Message", MessageBoxButtons.OK); 

    sb.Clear(); 
    sb.Append(currentTime); 
    sb.AppendLine(" **Error** failed to enter a valid name"); 

    ActivityrichTextBox.Text = ActivityrichTextBox.Text + sb.ToString(); 
    return; 
} 

也请不正确使用StringBuilder的创建活动日志的新生产线。

+1

+1,非常好说。 @OP:我会建议,不要使用.Length。您应该添加进一步验证,如确保它是字母数字或字母数字(无论您需要什么),以及使用'textBox.Text.Trim()。IsEmpty()' – sircapsalot

+0

@sircapsalot谢谢。不确定为什么不使用'Length'来进行简单的输入检查,但我更改为'IsNullOrWhiteSpace',因为这也是OP所使用的。 –