2014-03-12 96 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所使用的。 –