Update button causing lost data!
The following code at seemingly random times prompts the message for tryparse and then updates my data with either empty or null values. This can occur with data input into the totaltaxtextbox and totalwatertextbox or not.
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;
}
Any help on how to solve this issue would be great.
Thanks!
That's because your code simply continues execution after displaying a 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, a nicer way to handle this is using an errorProvider
, INotifyPropertyChanged
and validation
.
精彩评论