2014-11-05 58 views
0

我的文本框出現問題。我希望可以通過兩個文本框在GUI中爲圖表手動設置x軸和y軸的間隔。這有效,但當我鍵入一個字符或當我鍵入一個int並刪除它,程序立即崩潰,我得到一個System.FormatException(無需單擊按鈕接受更改)。我怎樣才能解決它,只要輸入不同的符號而不立即崩潰程序?我下面的代碼:TextBox只接受int

public void textBox2_TextChanged(object sender, EventArgs e) 
{ 
    x_axis_num = Convert.ToInt32(xAxisBox.Text, usC); 
} 

private void yAxisBox_TextChanged(object sender, EventArgs e) 
{ 
    y_axis_num = Convert.ToInt32(yAxisBox.Text); 
} 

獲取傳遞到另一個事件:

chart1.ChartAreas[0].AxisX.Interval = x_axis_num; 
chart1.ChartAreas[0].AxisY.Interval = y_axis_num; 
+1

的可能重複[我怎樣使一個文本框,只接受數字?](http://stackoverflow.com/questions/463299/how-do-i-make-a-textbox-that-only-accepts-numbers) – Shaharyar 2014-11-05 06:50:26

+0

顯示什麼事件指定圖表間隔。 @Shaharyar鏈接將幫助您處理角色部分,但由於您關注的是退格,所以您必須驗證您的作業事件 – TheProvost 2014-11-05 06:50:55

+0

它是當我單擊按鈕繪製圖形時發生的事件。所以當我改變軸的時間間隔,並點擊按鈕,它工作正常。我如何驗證? – uzi42tmp 2014-11-05 06:53:48

回答

3

在行x_axis_num = Convert.ToInt32(xAxisBox.Text, usC);,你正在服用無論是在文本框,並嘗試將其轉換爲一個整數值。

你認爲「嘿,我不是數字!」的轉換。會做?它會崩潰,主要是因爲該文本不是,也不會是一個數字。

取而代之,您可以使用Int.TryParse方法,該方法將採取任何文本和TRY將其轉換爲數字。

如果轉換成功,那就沒問題了。如果不成功,那麼您會在標記上得到一個false值,指示文本無法轉換。

例子:

int number; 

bool result = Int32.TryParse(YourTextBox.Text, out number); 

如果轉換成功,則數量值,否則,結果是假的所以做這樣的事情,那麼:

if(result) 
{ 
    xAxisBox.Text = number.ToString(); 
    x_axis_num = number; 
} 
else 
{ 
    xAxisBox.Text = string.Empty; 

    // Be careful here with what you set. 
    // This is the value you will set when the Text box has a non numeric value! 
    x_axis_num = 0;  
} 
+0

他告訴我TryParse方法沒有合法的價值當我這樣寫 - 編輯:sry有一個錯誤 – uzi42tmp 2014-11-05 07:02:25

+0

在哪個事件你建議他把這個? – TheProvost 2014-11-05 07:06:05

+0

我想說的是x軸事件和Y軸事件?或者我錯了? 「xAxisBox.Text = number;」中出現另一個錯誤 - 他告訴我,int到string的轉換是不可能的。 – uzi42tmp 2014-11-05 07:07:43