2011-01-28 19 views
0

從一個文本框解析爲int,涉足incrementHour方法如圖所示工作。C#輸入字符串的不正確的格式

if (txtHourPlus.Text != String.Empty) 
      { 
       time1.incrementHour(int.Parse(txtHour.Text)); 

      } 

而在時間類:(該時間1對象類)

public int incrementHour(int step) 
     { 
      if (step > 0 && hour < 24) 
      { 
       //step = step % hour; 
       hour = (hour + step) % 24; 
       time.AddHours(hour); 
       return hour; 
      }//end of if 

      else 
      { 
       MessageBox.Show("Please enter a positive number."); 

       return 0; 
      }//end of else 
     }//end of incrementHour 

不知道爲什麼我得到這個錯誤。我將它轉換爲corrent數據類型。因爲它接受一個int變量。


好吧好吧,我得到它的取值(小失誤>>根本不想說了吧) 但是有人已經說的方法可能需要的工作,因爲我試圖改變日期時間值,我在第一時間拿到並添加一個小時或減去和等等等等

+2

txtHour.Text不是一個有效的int。達達! – Will 2011-01-28 22:11:02

+0

你可以發佈堆棧跟蹤嗎?我假設錯誤來自`int.parse`。 – 2011-01-28 22:11:42

+0

,你應該更喜歡使用String.IsNullOrWhite空間,而不是比較的String.Empty :) – 2011-01-28 22:13:21

回答

3

如果有人輸入「富」到文本框,例如這會發生。您應該使用int.TryParse,它可以讓您檢測到錯誤而不會拋出異常。

我注意到,你實際上並沒有使用你的方法的返回值,雖然 - 就像你不使用的time.AddHours返回值。你知道DateTime.AddHours實際上並沒有修改你所調用的值,不是嗎? (我懷疑你需要調整這個方法不少,居然......它存在各種潛在的問題,這取決於你想要做什麼確切)

(最後,我會改變方法名稱爲IncrementHour以符合.NET慣例。)

1

如果您的輸入不可解析爲整數,嘗試解析它會引發異常。驗證或使用Int32.TryParse()

2

您是空虛測試txtHourPlus,但隨後解析和傳遞txtHour。錯字

0

更改您的這部分代碼(?):

if (txtHour.Text != String.Empty) 
{ 
    int parsedValue; 

    if (int.TryParse(txtHour.Text, out parsedValue)) 
    { 
     time1.incrementHour(parsedValue); 
    } 
    else 
    { 
     // non-numeric value was entered into the textbox - handle accordingly. 
    } 
}