2012-12-31 54 views
2

這實際上是我想要做的。我想讓某人輸入一個他們想要運行特定程序的次數。我無法弄清楚的是如何將數字10改爲(textBox1.Text)。如果你有更好的方法,請讓我知道。我對編程非常陌生。如何在while循環中放入文本框條目? C#

int counter = 1; 
while (counter <= 10) 
{ 
    Process.Start("notepad.exe"); 
    counter = counter + 1; 
} 
+0

我猜你是開始g,所以我會建議使用一個普通的舊的循環,而不是一會兒這裏 –

回答

5

這表明如何利用用戶提供的輸入和安全將其轉換爲一個整數(System.Int32)並在櫃檯中使用它。

int counter = 1; 
int UserSuppliedNumber = 0; 

// use Int32.TryParse, assuming the user may enter a non-integer value in the textbox. 
// Never trust user input. 
if(System.Int32.TryParse(TextBox1.Text, out UserSuppliedNumber) 
{ 
    while (counter <= UserSuppliedNumber) 
    { 
     Process.Start("notepad.exe"); 
     counter = counter + 1; // Could also be written as counter++ or counter += 1 to shorten the code 
    } 
} 
else 
{ 
    MessageBox.Show("Invalid number entered. Please enter a valid integer (whole number)."); 
} 
+0

Bah!錯誤在我的代碼中。他們現在應該都是固定的。 – David

+0

非常感謝。這幫助我學到了很多東西。 – AndB

+0

沒問題。我們都是新的一次。我希望這個網站在我剛剛新的時候就已經出現了。 – David

2

嘗試System.Int32.TryParse(textBox1.Text, out counterMax)Docs on MSDN)將字符串轉換爲數字。

此,如果轉換成功或錯誤,如果它失敗了會返回一個真正的(即用戶輸入的東西是不是一個整數)

+1

如果你建議TryParse,而不是這樣會更好 –

+0

這是一個好點,我會改變它。我的第一個想法是'Int32.Parse()'更適合於像這樣的循環,但'TryParse'更好。 – WildCrustacean

2

textBox1.Text將返回一個字符串。你需要將其轉換成int型,因爲它記錄用戶的輸入,你會想這樣做安全:

int max; 
Int32.TryParse(value, out max); 
if (max) 
{ 
    while (counter <= max) {} 
} 
else 
{ 
    //Error 
} 
0

我會建議使用MaskedTextBox控件接受來自用戶的輸入,這將幫助我們確保只有數字將提供。它不會爲我們限制TryParse的功能。

設定屏蔽這樣的:(可以用 「房產之窗」)

MaskedTextBox1.Mask = "00000"; // will support upto 5 digit numbers 

然後使用這樣的:

int finalRange = int.Parse(MaskedTextBox1.Text); 
int counter = 1; 
while (counter <= finalRange) 
{ 
    Process.Start("notepad.exe"); 
    counter = counter + 1; 
} 
0

使用嘗試捕捉身體,像這樣的功能

bool ErrorTextBox(Control C) 
    { 
     try 
     { 
      Convert.ToInt32(C.Text); 
      return true; 
     } 
     catch { return false; } 
    } 

並使用