2011-05-16 88 views
0

以下代碼在看似隨機的時間提示tryparse的消息,然後使用空值或空值更新我的數據。這可能發生在數據輸入到totaltaxtextbox和totalwatertextbox或沒有。更新按鈕導致數據丟失!

private void button2_Click(object sender, EventArgs e) 
    { 

      string parcel = parcelNumberTextBox.Text; 
      string premises = premisesTextBox.Text; 
      string beg = assessedBegTextBox.Text; 
      string dim = assessedDimTextBox.Text; 
      string legal = legalTextBox.Text; 
      string notes = sumNotesTextBox.Text; 
      string taxf = taxFromTextBox.Text; 
      string taxt = taxToTextBox.Text; 
      string waterf = waterFromTextBox.Text; 
      string watert = waterToTextBox.Text; 
      string recital = recitalTextBox.Text; 
      string taxLien = totalTaxTextBox.Text; 
      string waterLien = totalWaterTextBox.Text; 
      string taxName = taxAcctNameTextBox.Text; 
      string registry = registryTextBox.Text; 

      decimal taxOpen; 
      if (!decimal.TryParse(taxOpenTextBox.Text, NumberStyles.Number | NumberStyles.AllowCurrencySymbol, 
        NumberFormatInfo.CurrentInfo, out taxOpen)) 
       MessageBox.Show("Please enter a valid number in the Tax Open Text Box"); 

      decimal waterOpen; 

      if (!decimal.TryParse(waterOpenTextBox.Text, NumberStyles.Number | NumberStyles.AllowCurrencySymbol, 
        NumberFormatInfo.CurrentInfo, out waterOpen)) 
       MessageBox.Show("Please enter a valid number in the Water Open Text Box"); 


      DataClasses1DataContext db = new DataClasses1DataContext(); 

      var matchedCaseNumber = (from c in db.GetTable<PropertyInformation>() 
            where c.CaseNumberKey == caseNumberKeyTextBox.Text 
            select c).SingleOrDefault(); 


      matchedCaseNumber.AssessedBeg = beg; 
      matchedCaseNumber.AssessedDim = dim; 
      matchedCaseNumber.Premises = premises; 
      matchedCaseNumber.Legal = legal; 
      matchedCaseNumber.SumNotes = notes; 
      matchedCaseNumber.ParcelNumber = parcel; 
      matchedCaseNumber.TaxFrom = taxf; 
      matchedCaseNumber.TaxTo = taxt; 
      matchedCaseNumber.WaterFrom = waterf; 
      matchedCaseNumber.WaterTo = watert; 
      matchedCaseNumber.TaxOpen = taxOpen; 
      matchedCaseNumber.WaterOpen = waterOpen; 
      matchedCaseNumber.Recital = recital; 
      matchedCaseNumber.TotalTax = taxLien; 
      matchedCaseNumber.TotalWater = waterLien; 
      matchedCaseNumber.Registry = registry; 
      matchedCaseNumber.TaxAcctName = taxName; 
      matchedCaseNumber.TaxOpen = taxOpen; 
      matchedCaseNumber.WaterOpen = waterOpen; 

      db.SubmitChanges(); 
      Dirty = false; 

    } 

如何解決這個問題的任何幫助將是偉大的。

謝謝!

+0

順便說一句,你應該更新你的標題;按鈕點擊不會導致數據丟失;多功能代碼確實。 – 2011-05-16 00:40:26

回答

4

那是因爲你的代碼只是顯示一個MessageBox

if (!decimal.TryParse(taxOpenTextBox.Text, NumberStyles.Number | NumberStyles.AllowCurrencySymbol, 
       NumberFormatInfo.CurrentInfo, out taxOpen)) 
{ 
    MessageBox.Show("Please enter a valid number in the Tax Open Text Box"); 
    return; // <-------------- 
} 

BTW,來處理這一個更好的方法是使用errorProviderINotifyPropertyChangedvalidation後繼續執行。

+0

好的問題是它不應該首先顯示消息框。 – korrowan 2011-05-16 18:58:39