// Precondition: Insert, Letter menu item activated // Postcondition: The Letter dialog box is displayed. If data entered // are OK, a Letter is created and added to the list // of parcels private void letterToolStripMenuItem_Click(object sender, EventArgs e) { LetterForm letterForm; // The letter dialog box form DialogResult result; // The result of showing form as dialog if (addressList.Count < LetterForm.MIN_ADDRESSES) // Make sure we have enough addresses { MessageBox.Show("Need " + LetterForm.MIN_ADDRESSES + " addresses to create letter!", "Addresses Error"); return; } letterForm = new LetterForm(addressList); // Send list of addresses result = letterForm.ShowDialog(); if (result == DialogResult.OK) // Only add if OK { try { // For this to work, LetterForm's combo boxes need to be in same // order as addressList Letter newLetter = new Letter(addressList[letterForm.OriginAddressIndex], addressList[letterForm.DestinationAddressIndex], decimal.Parse(letterForm.FixedCostText)); // Letter to be inserted parcelList.Add(newLetter); } catch (FormatException) // This should never happen if form validation works! { MessageBox.Show("Problem with Letter Validation!", "Validation Error"); } } letterForm.Dispose(); // Best practice for dialog boxes }