Question

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!

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top