2011-06-28 90 views
0

我試圖驗證出生文本框字段的兩個數據如果會員不 進入這兩個箱子的錯誤信息會彈出類似「請輸入有效的日期格式」文本框不顯示

錯誤

通過使用下面的代碼

 if (tbStartDate.Text != "0" && tbEndDate.Text != "0") 
     { 

     string dob = tbStartDate.Text; 
     DateTime dv = DateTime.Parse(dob); 
     string format1 = dv.ToString("yyyy-MM-dd"); 
     string dob2 = tbEndDate.Text; 
     DateTime dt2 = DateTime.Parse(dob2); 
     string format2 = dt2.ToString("yyyy-MM-dd"); 
    } 
     else 
    { 
      MessageBox.Show("pls enter valid date "); 

    } 

當我試圖保存了輸入文本框的值有人表示這樣的 錯誤「字符串未被識別爲有效的DateTime」。

可以在此任一項幫助....

這個被修改的代碼仍然它被示出在日期時間DV誤差;

  private void btnCTimetablessave_Click(object sender, EventArgs e) 
    { 
     string dob = tbStartDate.Text; 
     DateTime dv; 
     if (!DateTime.TryParse(dob, out dv)) 
     { 

      MessageBox.Show("pls enter a valid start date"); 
      return; 
     } 

     string format1 = dv.ToString("yyyy-MM-dd"); 
     string dob2 = tbEndDate.Text; 
     DateTime dt2; 
     if (!DateTime.TryParse(dob2, out dt2)) 
     { 
      MessageBox.Show("pls enter valid end date"); 
      return; 
     } 

     string format2 = dt2.ToString("yyyy-MM-dd"); 

它仍然顯示像這樣的錯誤「字符串未被識別爲有效的日期時間」在datetime Dv;

,這是修改後的代碼第三次

 private void btnCTimetablessave_Click(object sender, EventArgs e) 
     { 
     string dob = tbStartDate.Text; 
     DateTime dv; 
     if (!DateTime.TryParse(dob, out dv)) 
     { 

      MessageBox.Show("pls enter a valid start date"); 
      return ; 
     } 

     string format1 = dv.ToString("yyyy-MM-dd"); 
     string dob2 = tbEndDate.Text; 
     DateTime dt2; 
     if (!DateTime.TryParse(dob2, out dt2)) 
     { 
      MessageBox.Show("pls enter valid end date"); 
      return; 
     } 

     string format2 = dt2.ToString("yyyy-MM-dd"); 
    } 

回答

1

這是因爲當您訪問Text屬性時,空文本框返回空字符串,如果傳遞空字符串,DateTime.Parse()將引發該異常。

+0

@ user682417:它看起來像你找到了錯誤。我很好奇它是什麼... – HCL

+0

這是版本問題,當我正在執行這一個有其他代碼的東西在後臺執行,我糾正了一個,我已經嘗試了所有這些技術,所有的工作都很好...非常感謝......對所有的 – user682417

5

不要使用DateTime.Parse。改爲使用DateTime.TryParse。結果是一個布爾值,如果解析成功,則返回true。

更新 作爲您的評論要求:

DateTime dv; 
if(!DateTime.TryParse(dob,out dv)){ 
    MessageBox.Show("Please enter a valid date"); 
    return; 
} 
.... 

克利裏,你也可以使用分析和捕獲異常,但這將是不良作風。最好使用TryParse。我只檢查了一個日期值。您可以根據需要擴展邏輯。希望這有助於。

+0

你們能給任何示例代碼... – user682417

+0

@ user6824127:我更新了我的答案 – HCL

+0

親愛的鹽酸,但它依然顯示錯誤我已包括修改後的代碼 – user682417

0

使用string.IsNullOrEmpty(tbStartDate.Text)檢查是否爲空白。

我會建議使用DatetimePicker用於選擇將返回一個有效DateTime值可用於進一步的處理

+0

仍然顯示這樣的錯誤字符串未被識別爲有效的DateTime。 – user682417

0

你必須使用Datetime.TryParse這樣

if(!DateTime.TryParse(dob)) 
0

我的日期的建議您使用try catch block來趕上FormatException,這樣如果用戶沒有以正確的格式輸入日期,它將捕獲異常並給出您選擇的消息

try 
{ 
    string dob = tbStartDate.Text; 
    DateTime dv = DateTime.Parse(dob); 
    string format1 = dv.ToString("yyyy-MM-dd"); 
    string dob2 = tbEndDate.Text; 
    DateTime dt2 = DateTime.Parse(dob2); 
    string format2 = dt2.ToString("yyyy-MM-dd"); 
} 
catch (System.FormatException) 
{ 
    MessageBox.Show("pls enter valid date format"); 
} 

OR

使用DateTimePicker始終是一個更好的和用戶友好的方式