Home

Example Application:
College Park Auto Repair

 

College Park Auto Repair

Introduction

This application reviews and demonstrates the process of printing in a .NET Framework application. The application is for a car repair business. The user can register the customer, the parts used during the repair, and the types of jobs performed. The application also makes the necessary calculations.

Windows Controls:

Practical LearningPractical Learning: Introducing Printing

  1. Start Microsoft Visual C#
  2. Create a new Windows Application named CollegeParkAutoRepair1
  3. In the Solution Explorer, right-click Form1.cs and click Rename
  4. Type Exercise.cs and press Enter
  5. From the Menus & Toolbars section of the Toolbox, click MenuStrip and click the form
  6. Design the menu items as follows:
     
    MenuItem DropDownItems
    Text Name Text Name Image Shortcut
    &File mnuFile &New Repair Order mnuFileNew new.ico Ctrl+N
        &Open Existing Order... mnuFileOpen open.ico Ctrl+O
        &Save Current Order mnuFileSave save.ico Ctrl+S
        Separator      
        &Print mnuFilePrint printer.ico Ctrl+P
        Separator      
        E&xit mnuFileExit    
  7. Design the form as follows:
     
    College Park Auto-Repair
    Control Name Text Other Properties
    Group   Order Identification  
    Label   Customer Name:  
    TextBox txtCustomerName    
    Label   Address  
    TextBox txtAddress    
    Label   City:  
    TextBox txtCity    
    Label   State:  
    TextBox txtState    
    Label   ZIP Code:  
    TextBox txtZIPCode   TextAlign: Right
    Label   Make / Model:  
    TextBox txtMake    
    TextBox txtModel    
    Label   Year:  
    TextBox txtCarYear   TextAlign: Right
    Label   Problem Description:  
    TextBox txtProblem    
    GroupBox   Parts Used  
    Label   Part Name  
    Label   Unit Price  
    Label   Qty  
    Label   Sub Total  
    TextBox txtPartName1    
    TextBox txtUnitPrice1 0.00 TextAlign: Right
    TextBox txtQuantity1 0 TextAlign: Right
    TextBox txtSubTotal1 0.00 TextAlign: Right
    Enabled: False
    TextBox txtPartName2    
    TextBox txtUnitPrice2 0.00 TextAlign: Right
    TextBox txtQuantity2 0 TextAlign: Right
    TextBox txtSubTotal2 0.00 TextAlign: Right
    Enabled: False
    TextBox txtPartName3    
    TextBox txtUnitPrice3 0.00 TextAlign: Right
    TextBox txtQuantity3 0 TextAlign: Right
    TextBox txtSubTotal3 0.00 TextAlign: Right
    Enabled: False
    TextBox txtPartName4    
    TextBox txtUnitPrice4 0.00 TextAlign: Right
    TextBox txtQuantity4 0 TextAlign: Right
    TextBox txtSubTotal4 0.00 TextAlign: Right
    Enabled: False
    TextBox txtPartName5    
    TextBox txtUnitPrice5 0.00 TextAlign: Right
    TextBox txtQuantity5 0 TextAlign: Right
    TextBox txtSubTotal5 0.00 TextAlign: Right
    Enabled: False
    GroupBox   Jobs Performed  
    Label   Price  
    TextBox txtJobPerformed1    
    TextBox txtJobPrice1 0.00 TextAlign: Right
    TextBox txtJobPerformed2    
    TextBox txtJobPrice2 0.00 TextAlign: Right
    TextBox txtJobPerformed3    
    TextBox txtJobPrice3 0.00 TextAlign: Right
    TextBox txtJobPerformed4    
    TextBox txtJobPrice4 0.00 TextAlign: Right
    TextBox txtJobPerformed5    
    TextBox txtJobPrice5 0.00 TextAlign: Right
    GroupBox   Order Summary  
    Label   Total Parts:  
    TextBox txtTotalParts 0.00 TextAlign: Right
    Label   Total Labor:  
    TextBox txtTotalLabor 0.00 TextAlign: Right
    Label   Tax Rate:  
    TextBox txtTaxRate 7.75 TextAlign: Right
    Label   %  
    Label   Tax Amount:  
    TextBox txtTaxAmount 0.00 TextAlign: Right
    Label   Total Order:  
    TextBox txtTotalOrder 0.00 TextAlign: Right
    Label   Recommendations  
    TextBox txtRecommendations   Multiline: True
    ScrollBars: Vertical
  8. Right-click the form and click View Code
  9. Create a method named Calculate as follows:
      
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace CollegeParkAutoRepair1
    {
        public partial class Exercise : Form
        {
            public Exercise()
            {
                InitializeComponent();
            }
            
            void Calculate()
            {
                double part1UnitPrice = 0.00, part2UnitPrice = 0.00,
                       part3UnitPrice = 0.00, part4UnitPrice = 0.00,
                       part5UnitPrice = 0.00;
                double part1SubTotal, part2SubTotal, part3SubTotal,
                       part4SubTotal, part5SubTotal, totalParts;
                int part1Quantity = 0, part2Quantity = 0, part3Quantity = 0,
                       part4Quantity = 0, part5Quantity = 0;
                double job1Price = 0.00, job2Price = 0.00, job3Price = 0.00,
                       job4Price = 0.00, job5Price = 0.00;
                double totalLabor;
                double taxRate = 0.00, taxAmount, totalOrder;
    
                // Don't charge a part unless it is clearly identified
                if (txtPartName1.Text == "")
                {
                    txtUnitPrice1.Text = "0.00";
                    txtQuantity1.Text = "0";
                    txtSubTotal1.Text = "0.00";
                    part1UnitPrice = 0.00;
                }
                else
                {
                    try
                    {
                        part1UnitPrice = double.Parse(txtUnitPrice1.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Unit Price");
                        txtUnitPrice1.Text = "0.00";
                        txtUnitPrice1.Focus();
                    }
    
                    try
                    {
                        part1Quantity = int.Parse(txtQuantity1.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Quantity");
                        txtQuantity1.Text = "0";
                        txtQuantity1.Focus();
                    }
                }
    
                if (this.txtPartName2.Text == "" )
                {
                    txtUnitPrice2.Text = "0.00";
                    txtQuantity2.Text = "0";
                    txtSubTotal2.Text = "0.00";
                    part2UnitPrice = 0.00;
                }
                else
                {
                    try
                    {
                        part2UnitPrice = double.Parse(txtUnitPrice2.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Unit Price");
                        this.txtUnitPrice2.Text = "0.00";
                        this.txtUnitPrice2.Focus();
                    }
    
                    try
                    {
                        part2Quantity = int.Parse(txtQuantity2.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Quantity");
                        txtQuantity2.Text = "0";
                        txtQuantity2.Focus();
                    }
                }
    
                if (txtPartName3.Text == "" )
                {
                    txtUnitPrice3.Text = "0.00";
                    txtQuantity3.Text = "0";
                    txtSubTotal3.Text = "0.00";
                    part3UnitPrice = 0.00;
                }
                else
                {
                    try
                    {
                        part3UnitPrice = double.Parse(txtUnitPrice3.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Unit Price");
                        txtUnitPrice3.Text = "0.00";
                        txtUnitPrice3.Focus();
                    }
    
                    try
                    {
                        part3Quantity = int.Parse(txtQuantity3.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Quantity");
                        txtQuantity3.Text = "0";
                        txtQuantity3.Focus();
                    }
                }
    
                if (txtPartName4.Text == "" )
                {
                    txtUnitPrice4.Text = "0.00";
                    txtQuantity4.Text = "0";
                    txtSubTotal4.Text = "0.00";
                    part4UnitPrice = 0.00;
                }
                else
                {
                    try
                    {
                        part4UnitPrice = double.Parse(txtUnitPrice4.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Unit Price");
                        txtUnitPrice4.Text = "0.00";
                        txtUnitPrice4.Focus();
                    }
    
                    try
                    {
                        part4Quantity = int.Parse(txtQuantity4.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Quantity");
                        txtQuantity4.Text = "0";
                        txtQuantity4.Focus();
                    }
                }
    
                if (txtPartName5.Text == "" )
                {
                    txtUnitPrice5.Text = "0.00";
                    txtQuantity5.Text = "0";
                    txtSubTotal5.Text = "0.00";
                    part5UnitPrice = 0.00;
                }
                else
                {
                    try
                    {
                        part5UnitPrice = double.Parse(txtUnitPrice5.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Unit Price");
                        txtUnitPrice5.Text = "0.00";
                        txtUnitPrice5.Focus();
                    }
    
                    try
                    {
                        part5Quantity = int.Parse(txtQuantity5.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Quantity");
                        txtQuantity5.Text = "0";
                        txtQuantity5.Focus();
                    }
                }
    
                // Don't bill the customer for a job that is not specified
                if (txtJobDescription1.Text == "")
                {
                    txtJobPrice1.Text = "0.00";
                    job1Price = 0.00;
                }
                else
                {
                    try
                    {
                        job1Price = double.Parse(txtJobPrice1.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Job Price");
                        txtJobPrice1.Text = "0.00";
                        txtJobPrice1.Focus();
                    }
                }
    
                if (txtJobDescription2.Text == "")
                {
                    txtJobPrice2.Text = "0.00";
                    job2Price = 0.00;
                }
                else
                {
                    try
                    {
                        job2Price = double.Parse(txtJobPrice2.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Job Price");
                        txtJobPrice2.Text = "0.00";
                        txtJobPrice2.Focus();
                    }
                }
    
                if (txtJobDescription3.Text == "")
                {
                    txtJobPrice3.Text = "0.00";
                    job3Price = 0.00;
                }
                else
                {
                    try
                    {
                        job3Price = double.Parse(txtJobPrice3.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Job Price");
                        txtJobPrice3.Text = "0.00";
                        txtJobPrice3.Focus();
                    }
                }
    
                if (txtJobDescription4.Text == "")
                {
                    txtJobPrice4.Text = "0.00";
                    job4Price = 0.00;
                }
                else
                {
                    try
                    {
                        job4Price = double.Parse(txtJobPrice4.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Job Price");
                        txtJobPrice4.Text = "0.00";
                        txtJobPrice4.Focus();
                    }
                }
    
                if (txtJobDescription5.Text == "")
                {
                    txtJobPrice5.Text = "0.00";
                    job5Price = 0.00;
                }
                else
                {
                    try
                    {
                        job5Price = double.Parse(txtJobPrice5.Text);
                    }
                    catch (FormatException)
                    {
                        MessageBox.Show("Invalid Job Price");
                        txtJobPrice5.Text = "0.00";
                        txtJobPrice5.Focus();
                    }
                }
    
                part1SubTotal = part1UnitPrice * part1Quantity;
                part2SubTotal = part2UnitPrice * part2Quantity;
                part3SubTotal = part3UnitPrice * part3Quantity;
                part4SubTotal = part4UnitPrice * part4Quantity;
                part5SubTotal = part5UnitPrice * part5Quantity;
    
                txtSubTotal1.Text = part1SubTotal.ToString("F");
                txtSubTotal2.Text = part2SubTotal.ToString("F");
                txtSubTotal3.Text = part3SubTotal.ToString("F");
                txtSubTotal4.Text = part4SubTotal.ToString("F");
                txtSubTotal5.Text = part5SubTotal.ToString("F");
    
                totalParts = part1SubTotal + part2SubTotal + part3SubTotal +
                        part4SubTotal + part5SubTotal;
    
                totalLabor = job1Price + job2Price + job3Price +
                                job4Price + job5Price;
    
                try
                {
                    taxRate = double.Parse(txtTaxRate.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Invalid Tax Rate");
                    txtTaxRate.Text = "7.75";
                    txtTaxRate.Focus();
                }
    
                double totalPartsAndLabor = totalParts + totalLabor;
                taxAmount = totalPartsAndLabor * taxRate / 100;
                totalOrder = totalPartsAndLabor + taxAmount;
    
                txtTotalParts.Text = totalParts.ToString("F");
                txtTotalLabor.Text = totalLabor.ToString("F");
                txtTaxAmount.Text = taxAmount.ToString("F");
                txtTotalOrder.Text = totalOrder.ToString("F");
            }
        }
    }
  10. Return to the form
  11. On the form, click File and double-click New Repair Order
  12. Implement its Click event as follows:
     
    private void mnuFileNew_Click(object sender, EventArgs e)
    {
        this.txtCustomerName.Text = "";
                this.txtAddress.Text = "";
                this.txtCity.Text = "";
                this.txtState.Text = "";
                this.txtZIPCode.Text = "";
                this.txtMake.Text = "";
                this.txtModel.Text = "";
                this.txtCarYear.Text = "";
                this.txtProblem.Text = "";
    
                this.txtPartName1.Text = "";
                this.txtUnitPrice1.Text = "0.00";
                this.txtQuantity1.Text = "0";
                this.txtSubTotal1.Text = "0.00";
                this.txtPartName2.Text = "";
                this.txtUnitPrice2.Text = "0.00";
                this.txtQuantity2.Text = "0";
                this.txtSubTotal2.Text = "0.00";
                this.txtPartName3.Text = "";
                this.txtUnitPrice3.Text = "0.00";
                this.txtQuantity3.Text = "0";
                this.txtSubTotal3.Text = "0.00";
                this.txtPartName4.Text = "";
                this.txtUnitPrice4.Text = "0.00";
                this.txtQuantity4.Text = "0";
                this.txtSubTotal4.Text = "0.00";
                this.txtPartName5.Text = "";
                this.txtUnitPrice5.Text = "0.00";
                this.txtQuantity5.Text = "0";
                this.txtSubTotal5.Text = "0.00";
    
                this.txtJobDescription1.Text = "";
                this.txtJobPrice1.Text = "0.00";
                this.txtJobDescription2.Text = "";
                this.txtJobPrice2.Text = "0.00";
                this.txtJobDescription3.Text = "";
                this.txtJobPrice3.Text = "0.00";
                this.txtJobDescription4.Text = "";
                this.txtJobPrice4.Text = "0.00";
                this.txtJobDescription5.Text = "";
                this.txtJobPrice5.Text = "0.00";
    
                this.txtTotalParts.Text = "0.00";
                this.txtTotalLabor.Text = "0.00";
                this.txtTaxRate.Text = "7.75";
                this.txtTaxAmount.Text = "0.00";
                this.txtTotalOrder.Text = "0.00";
    
                this.txtRecommendations.Text = "";
                this.txtCustomerName.Focus();
    }
  13. Return to the form
  14. Click the first text box under Unit Price
  15. In the Properties window, click the Events button and double-click Leave
  16. In the same way, generate the Leave event of the other unit prices, the quantities, and the job prices text box
  17. Call the Calculate() method for each:
     
    private void txtUnitPrice1_Leave(object sender, EventArgs e)
    {
            Calculate();
    }
    
    private void txtUnitPrice2_Leave(object sender, EventArgs e)
    {
            Calculate();
    }
    
    private void txtUnitPrice3_Leave(object sender, EventArgs e)
    {
            Calculate();
    }
    
    private void txtUnitPrice4_Leave(object sender, EventArgs e)
    {
            Calculate();
    }
    
    private void txtUnitPrice5_Leave(object sender, EventArgs e)
    {
        Calculate();
    }
    
    private void txtQuantity1_Leave(object sender, EventArgs e)
    {
        Calculate();
    }
    
    private void txtQuantity2_Leave(object sender, EventArgs e)
    {
        Calculate();
    }
    
            private void txtQuantity3_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtQuantity4_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtQuantity5_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtJobPrice1_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtJobPrice2_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtJobPrice3_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtJobPrice4_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
    
            private void txtJobPrice5_Leave(object sender, EventArgs e)
            {
                Calculate();
            }
  18. Return to the form
  19. From the Dialogs section of the Toolbox, click OpenFileDialog and click the form
  20. Change its properties as follows:
    Title: Open Existing Repair Order
    DefaultExt: rpr
    Filter: Repair Orders (*.rpr)|*.rpr|All Files|
    Name: dlgOpen
  21. From the Dialogs section of the Toolbox, click SaveFileDialog and click the form
  22. Change its properties as follows:
    Title: Save Current Repair Order
    DefaultExt: rpr
    Filter: Repair Orders (*.rpr)|*.rpr|All Files|
    Name: dlgSave
  23. On the form, click File and double-click Open Existing Order
  24. In the top section of the file, type the following:
     
    using System;
    using System.ComponentModel;
    using System.Collections;
    using System.Windows.Forms;
    using System.Data;
    using System.Drawing;
    using System.IO;
  25. Implement its Click event as follows:
     
    private void mnuFileOpen_Click(object sender, EventArgs e)
    {
            dlgOpen.InitialDirectory = @"C:\College Park Auto Repair";
    
            if (dlgOpen.ShowDialog() == DialogResult.OK)
            {
                    FileStream fleCPAR = new FileStream(this.dlgOpen.FileName,
                           FileMode.Open, FileAccess.Read, FileShare.Read);
                    BinaryReader bnrCPAR = new BinaryReader(fleCPAR);
    
                    this.txtCustomerName.Text = bnrCPAR.ReadString();
                    this.txtAddress.Text = bnrCPAR.ReadString();
                    this.txtCity.Text = bnrCPAR.ReadString();
                    this.txtState.Text = bnrCPAR.ReadString();
                    this.txtZIPCode.Text = bnrCPAR.ReadString();
                    this.txtMake.Text = bnrCPAR.ReadString();
                    this.txtModel.Text = bnrCPAR.ReadString();
                    this.txtCarYear.Text = bnrCPAR.ReadString();
                    this.txtProblem.Text = bnrCPAR.ReadString();
    
                    this.txtPartName1.Text = bnrCPAR .ReadString();
                    this.txtUnitPrice1.Text = bnrbnrCPAR.ReadString();
                    this.txtQuantity1.Text = bnrbnrCPAR.ReadString();
                    this.txtSubTotal1.Text = bnrbnrCPAR.ReadString();
                    this.txtPartName2.Text = bnrbnrCPAR.ReadString();
                    this.txtUnitPrice2.Text = bnrbnrCPAR.ReadString();
                    this.txtQuantity2.Text = bnrbnrCPAR.ReadString();
                    this.txtSubTotal2.Text = bnrbnrCPAR.ReadString();
                    this.txtPartName3.Text = bnrbnrCPAR.ReadString();
                    this.txtUnitPrice3.Text = bnrbnrCPAR.ReadString();
                    this.txtQuantity3.Text = bnrbnrCPAR.ReadString();
                    this.txtSubTotal3.Text = bnrbnrCPAR.ReadString();
                    this.txtPartName4.Text = bnrbnrCPAR.ReadString();
                    this.txtUnitPrice4.Text = bnrbnrCPAR.ReadString();
                    this.txtQuantity4.Text = bnrbnrCPAR.ReadString();
                    this.txtSubTotal4.Text = bnrbnrCPAR.ReadString();
                    this.txtPartName5.Text = bnrbnrCPAR.ReadString();
                    this.txtUnitPrice5.Text = bnrbnrCPAR.ReadString();
                    this.txtQuantity5.Text = bnrbnrCPAR.ReadString();
    
                    this.txtSubTotal5.Text = bnrbnrCPAR.ReadString();
                    this.txtJobDescription1.Text = bnrbnrCPAR.ReadString();
                    this.txtJobPrice1.Text = bnrbnrCPAR.ReadString();
                    this.txtJobDescription2.Text = bnrbnrCPAR.ReadString();
                    this.txtJobPrice2.Text = bnrbnrCPAR.ReadString();
                    this.txtJobDescription3.Text = bnrbnrCPAR.ReadString();
                    this.txtJobPrice3.Text = bnrbnrCPAR.ReadString();
                    this.txtJobDescription4.Text = bnrbnrCPAR.ReadString();
                    this.txtJobPrice4.Text = bnrbnrCPAR.ReadString();
                    this.txtJobDescription5.Text = bnrbnrCPAR.ReadString();
                    this.txtJobPrice5.Text = bnrbnrCPAR.ReadString();
    
                    this.txtTotalParts.Text = bnrbnrCPAR.ReadString();
                    this.txtTotalLabor.Text = bnrbnrCPAR.ReadString();
                    this.txtTaxRate.Text = bnrbnrCPAR.ReadString();
                    this.txtTaxAmount.Text = bnrbnrCPAR.ReadString();
                    this.txtTotalOrder.Text = bnrbnrCPAR.ReadString();
                    this.txtRecommendations.Text = bnrbnrCPAR.ReadString();
    
                    bnrCPAR.Close();
                    fleCPAR.Close();
            }
    }
  26. Return to the form
  27. On the form, click File and double-click Save Current Order
  28. Implement the event as follows:
     
    private void mnuFileSave_Click(object sender, EventArgs e)
    {
        // Just in case, calculate the order now
        Calculate();
        // This number will be used to incrementally create the files by their names
        int incremental = 1000;
        // Check the above folder. If it exists, don't create it
        //                                       If it doesn't exist, then create it
        string strDirectory = @"C:\College Park Auto Repair";
        DirectoryInfo dirInfo = Directory.CreateDirectory(strDirectory);
    
        // Get the list of files, if any, from the above folder
        FileInfo[] fleList = dirInfo.GetFiles();
    
        // If there is no file in the directory,
        // then get ready to create the first file
        if (fleList.Length == 0)
        {
            // Get ready to display it in the Save dialog box
            dlgSave.FileName = incremental.ToString() + ".rpr";
        }
        else // If there was at least one file in the directory
        {
            // Get a reference to the last file
            FileInfo fleLast = fleList[fleList.Length - 1];
            // Get the name of the last file without its extension
            string fwe = Path.GetFileNameWithoutExtension(fleLast.FullName);
            // Increment the name of the file by 1
            incremental = int.Parse(fwe) + 1;
            // Get ready to display it in the Save dialog box
            dlgSave.FileName = incremental.ToString() + ".rpr";
        }
    
        // For convenience, display the Save dialog box in the directory
        // created above
        dlgSave.InitialDirectory = dirInfo.FullName;
    
        // Find out if the user clicked OK after displaying the Save dialog box
        if (dlgSave.ShowDialog() == DialogResult.OK)
        {
            // Create a new file using the name of the Save dialog box
            FileStream fleCPAR = new FileStream(dlgSave.FileName,
                       FileMode.Create, FileAccess.Write, FileShare.Write);
            BinaryWriter bnrCPAR = new BinaryWriter(fleCPAR);
    
                    // Write each value in the file
                    bnrCPAR.Write(this.txtCustomerName.Text);
                    bnrCPAR.Write(this.txtAddress.Text);
                    bnrCPAR.Write(this.txtCity.Text);
                    bnrCPAR.Write(this.txtState.Text);
                    bnrCPAR.Write(this.txtZIPCode.Text);
                    bnrCPAR.Write(this.txtMake.Text);
                    bnrCPAR.Write(this.txtModel.Text);
                    bnrCPAR.Write(this.txtCarYear.Text);
                    bnrCPAR.Write(this.txtProblem.Text);
    
                    bnrCPAR.Write(this.txtPartName1.Text);
                    bnrCPAR.Write(this.txtUnitPrice1.Text);
                    bnrCPAR.Write(this.txtQuantity1.Text);
                    bnrCPAR.Write(this.txtSubTotal1.Text);
                    bnrCPAR.Write(this.txtPartName2.Text);
                    bnrCPAR.Write(this.txtUnitPrice2.Text);
                    bnrCPAR.Write(this.txtQuantity2.Text);
                    bnrCPAR.Write(this.txtSubTotal2.Text);
                    bnrCPAR.Write(this.txtPartName3.Text);
                    bnrCPAR.Write(this.txtUnitPrice3.Text);
                    bnrCPAR.Write(this.txtQuantity3.Text);
                    bnrCPAR.Write(this.txtSubTotal3.Text);
                    bnrCPAR.Write(this.txtPartName4.Text);
                    bnrCPAR.Write(this.txtUnitPrice4.Text);
                    bnrCPAR.Write(this.txtQuantity4.Text);
                    bnrCPAR.Write(this.txtSubTotal4.Text);
                    bnrCPAR.Write(this.txtPartName5.Text);
                    bnrCPAR.Write(this.txtUnitPrice5.Text);
                    bnrCPAR.Write(this.txtQuantity5.Text);
                    bnrCPAR.Write(this.txtSubTotal5.Text);
    
                    bnrCPAR.Write(this.txtJobDescription1.Text);
                    bnrCPAR.Write(this.txtJobPrice1.Text);
                    bnrCPAR.Write(this.txtJobDescription2.Text);
                    bnrCPAR.Write(this.txtJobPrice2.Text);
                    bnrCPAR.Write(this.txtJobDescription3.Text);
                    bnrCPAR.Write(this.txtJobPrice3.Text);
                    bnrCPAR.Write(this.txtJobDescription4.Text);
                    bnrCPAR.Write(this.txtJobPrice4.Text);
                    bnrCPAR.Write(this.txtJobDescription5.Text);
                    bnrCPAR.Write(this.txtJobPrice5.Text);
    
                    bnrCPAR.Write(this.txtTotalParts.Text);
                    bnrCPAR.Write(this.txtTotalLabor.Text);
                    bnrCPAR.Write(this.txtTaxRate.Text);
                    bnrCPAR.Write(this.txtTaxAmount.Text);
                    bnrCPAR.Write(this.txtTotalOrder.Text);
    
                    bnrCPAR.Write(this.txtRecommendations.Text);
    
                    bnrCPAR.Close();
                    fleCPAR.Close();
    
                    mnuFileNew_Click(sender, e);
            }
    }
  29. Execute the application to test it
  30. Create a new record. Here is an example:
     
    College Park Auto Repair
  31. On the main menu of the form, click File -> Save Current Order...
  32. Accept the suggested name of the file and click Save
  33. Create another order, calculate it and save it
  34. Try opening a previously saved order
  35. Close the form and return to your programming environment
  36. From the Printing section of the Toolbox, click the PrintDialog button PrintDialog and click the form
  37. While the print control is still selected, in the Properties window, change its Name to dlgPrint
  38. From the Printing section of the Toolbox, click the PrintDocument button PrintDocument and click the form
  39. While the print document control is still selected, in the Properties window, change its name to docPrint
  40. Under the form, click dlgPrint
  41. In the Properties window, click Document and select docPrint
  42. On the bar under the form, double-click docPrint to generate its default event
  43. Implement the PrintPage event as follows:
     
    private void docPrint_PrintPage(object sender,
                System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawLine(new Pen(Color.Black, 2), 60, 90, 680, 90);
        e.Graphics.DrawLine(new Pen(Color.Black, 1), 60, 93, 680, 93);
    
        string strDisplay = "College Park Auto Repair";
        System.Drawing.Font fntString = new Font("Times New Roman", 28,
                    FontStyle.Bold);
        e.Graphics.DrawString(strDisplay, fntString,
                    Brushes.Black, 160, 100);
    
        strDisplay = "Customer Car Repair Order";
        fntString = new System.Drawing.Font("Times New Roman", 18,
                    FontStyle.Bold);
        e.Graphics.DrawString(strDisplay, fntString,
                    Brushes.Black, 220, 150);
    
        e.Graphics.DrawLine(new Pen(Color.Black, 1), 60, 184, 680, 184);
        e.Graphics.DrawLine(new Pen(Color.Black, 2), 60, 187, 680, 187);
    
        fntString = new System.Drawing.Font("Times New Roman", 12,
                    FontStyle.Bold);
        e.Graphics.DrawString("Order Identification", fntString,
                    Brushes.Black, 80, 200);
    
        e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 250, 640, 250);
    
        fntString = new System.Drawing.Font("Times New Roman", 10,
                    FontStyle.Bold);
        e.Graphics.DrawString("Customer Name:", fntString,
                    Brushes.Black, 100, 260);
        fntString = new System.Drawing.Font("Times New Roman", 10,
                    FontStyle.Regular);
        e.Graphics.DrawString(txtCustomerName.Text, fntString,
                    Brushes.Black, 260, 260); ;
    
        e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 280, 640, 280);
    
        fntString = new Font("Times New Roman", 10, FontStyle.Bold);
        e.Graphics.DrawString("Address:", fntString,
                    Brushes.Black, 100, 290);
                fntString = new Font("Times New Roman", 10, FontStyle.Regular);
                e.Graphics.DrawString(txtAddress.Text, fntString,
                    Brushes.Black, 260, 290); ;
    
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 310, 640, 310);
    
                fntString = new Font("Times New Roman", 10, FontStyle.Regular);
                string strAddress = txtCity.Text.ToString() + ", " +
                                    txtState.Text + " " + txtZIPCode.Text;
        e.Graphics.DrawString(strAddress, fntString, Brushes.Black, 260, 320);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 340, 640, 340);
    
                fntString = new Font("Times New Roman", 10, FontStyle.Bold);
                e.Graphics.DrawString("Car:", fntString, Brushes.Black, 100, 350);
                fntString = new Font("Times New Roman", 10, FontStyle.Regular);
                string strCar = txtMake.Text + ", " + txtModel.Text +
                                ", " + txtCarYear.Text;
                e.Graphics.DrawString(strCar, fntString, Brushes.Black, 260, 350);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 370, 640, 370);
    
                fntString = new Font("Times New Roman", 10, FontStyle.Bold);
                e.Graphics.DrawString("Problem Description:", fntString,
                    Brushes.Black, 100, 380);
                fntString = new Font("Times New Roman", 10, FontStyle.Regular);
                e.Graphics.DrawString(txtProblem.Text, fntString,
                                      Brushes.Black,
                                      new RectangleF(260, 380, 420, 380));
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 400, 640, 400);
    
        fntString = new System.Drawing.Font("Times New Roman", 12,
    					FontStyle.Bold);
                e.Graphics.DrawString("Parts Used", fntString,
                    Brushes.Black, 80, 430);
    
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 80, 450, 680, 450);
    
                e.Graphics.DrawString("Parts Name", fntString,
                    Brushes.Black, 100, 460);
                e.Graphics.DrawString("Unit Price", fntString,
                    Brushes.Black, 420, 460);
                e.Graphics.DrawString("Qty", fntString,
                    Brushes.Black, 520, 460);
                e.Graphics.DrawString("Sub-Total", fntString,
                    Brushes.Black, 562, 460);
    
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 480, 640, 480);
    
                fntString = new Font("Times New Roman", 10, FontStyle.Regular);
                StringFormat fmtString = new StringFormat();
                fmtString.Alignment = StringAlignment.Far;
    
                e.Graphics.DrawString(txtPartName1.Text, fntString,
                    Brushes.Black, 100, 490);
                e.Graphics.DrawString(txtUnitPrice1.Text, fntString,
                    Brushes.Black, 480, 490, fmtString);
                e.Graphics.DrawString(txtQuantity1.Text, fntString,
                    Brushes.Black, 540, 490, fmtString);
                e.Graphics.DrawString(txtSubTotal1.Text, fntString,
                    Brushes.Black, 630, 490, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1),
                    100, 510, 640, 510);
    
                e.Graphics.DrawString(txtPartName2.Text, fntString,
                    Brushes.Black, 100, 520);
                e.Graphics.DrawString(txtUnitPrice2.Text, fntString,
                    Brushes.Black, 480, 520, fmtString);
                e.Graphics.DrawString(txtQuantity2.Text, fntString,
                    Brushes.Black, 540, 520, fmtString);
                e.Graphics.DrawString(txtSubTotal2.Text, fntString,
                    Brushes.Black, 630, 520, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 540, 640, 540);
    
                e.Graphics.DrawString(txtPartName3.Text, fntString,
                    Brushes.Black, 100, 550);
                e.Graphics.DrawString(txtUnitPrice3.Text, fntString,
                    Brushes.Black, 480, 550, fmtString);
                e.Graphics.DrawString(txtQuantity3.Text, fntString,
                    Brushes.Black, 540, 550, fmtString);
                e.Graphics.DrawString(txtSubTotal3.Text, fntString,
                    Brushes.Black, 630, 550, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1),
                    100, 570, 640, 570);
    
                e.Graphics.DrawString(txtPartName4.Text, fntString,
                    Brushes.Black, 100, 580);
                e.Graphics.DrawString(txtUnitPrice4.Text, fntString,
                    Brushes.Black, 480, 580, fmtString);
                e.Graphics.DrawString(txtQuantity4.Text, fntString,
                    Brushes.Black, 540, 580, fmtString);
                e.Graphics.DrawString(txtSubTotal4.Text, fntString,
                    Brushes.Black, 630, 580, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 600, 640, 600);
    
                e.Graphics.DrawString(txtPartName5.Text, fntString,
                    Brushes.Black, 100, 610);
                e.Graphics.DrawString(txtUnitPrice5.Text, fntString,
                    Brushes.Black, 480, 610, fmtString);
                e.Graphics.DrawString(txtQuantity5.Text, fntString,
                    Brushes.Black, 540, 610, fmtString);
                e.Graphics.DrawString(txtSubTotal5.Text, fntString,
                    Brushes.Black, 630, 610, fmtString);
        e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 630, 640, 630);
    
                fntString = new Font("Times New Roman", 12, FontStyle.Bold);
                e.Graphics.DrawString("Jobs Performed", fntString,
                    Brushes.Black, 80, 650);
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 80, 670, 680, 670);
    
        e.Graphics.DrawString("Job Name", fntString, Brushes.Black, 100, 680);
        e.Graphics.DrawString("Price", fntString, Brushes.Black, 562, 680);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 700, 640, 700);
    
                fntString = new Font("Times New Roman", 10, FontStyle.Regular);
    
                e.Graphics.DrawString(txtJobDescription1.Text, fntString,
                    Brushes.Black, 100, 710);
                e.Graphics.DrawString(txtJobPrice1.Text, fntString,
                    Brushes.Black, 600, 710, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 730, 640, 730);
    
                e.Graphics.DrawString(txtJobDescription2.Text, fntString,
                    Brushes.Black, 100, 740);
                e.Graphics.DrawString(txtJobPrice2.Text, fntString,
                    Brushes.Black, 600, 740, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 760, 640, 760);
    
                e.Graphics.DrawString(txtJobDescription3.Text, fntString,
                    Brushes.Black, 100, 770);
                e.Graphics.DrawString(txtJobPrice3.Text, fntString,
                    Brushes.Black, 600, 770, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 790, 640, 790);
    
                e.Graphics.DrawString(txtJobDescription4.Text, fntString,
                    Brushes.Black, 100, 800);
                e.Graphics.DrawString(txtJobPrice4.Text, fntString,
                    Brushes.Black, 600, 800, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 820, 640, 820);
    
                e.Graphics.DrawString(txtJobDescription5.Text, fntString,
                    Brushes.Black, 100, 830);
                e.Graphics.DrawString(txtJobPrice5.Text, fntString,
                    Brushes.Black, 600, 830, fmtString);
                e.Graphics.DrawLine(new Pen(Color.Black, 1), 100, 850, 640, 850);
    
        fntString = new System.Drawing.Font("Times New Roman", 12,
    					 FontStyle.Bold);
                e.Graphics.DrawString("Order Summary", fntString,
                    Brushes.Black, 80, 870);
                e.Graphics.DrawLine(new Pen(Color.Black, 2), 80, 890, 680, 890);
    
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					 FontStyle.Bold);
                e.Graphics.DrawString("Total Parts:", fntString,
                    Brushes.Black, 500, 900);
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					FontStyle.Regular);
                e.Graphics.DrawString(txtTotalParts.Text, fntString,
                    Brushes.Black, 640, 900, fmtString);
    
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					 FontStyle.Bold);
                e.Graphics.DrawString("Total Labor:", fntString,
                    Brushes.Black, 500, 920);
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					FontStyle.Regular);
                e.Graphics.DrawString(txtTotalLabor.Text, fntString,
                    Brushes.Black, 640, 920, fmtString);
    
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					 FontStyle.Bold);
                e.Graphics.DrawString("Tax Rate:", fntString,
                    Brushes.Black, 500, 940);
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					FontStyle.Regular);
                e.Graphics.DrawString(txtTaxRate.Text, fntString,
                    Brushes.Black, 640, 940, fmtString);
    
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					 FontStyle.Bold);
                e.Graphics.DrawString("Tax Amount:", fntString,
                    Brushes.Black, 500, 960);
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					FontStyle.Regular);
                e.Graphics.DrawString(txtTaxAmount.Text, fntString,
                    Brushes.Black, 640, 960, fmtString);
    
        fntString = new System.Drawing.Font("Times New Roman", 10,
    					FontStyle.Bold);
                e.Graphics.DrawString("Repair Total:", fntString,
                    Brushes.Black, 500, 980);
        fntString = new System.Drawing.Font("Times New Roman",
    					10, FontStyle.Regular);
                e.Graphics.DrawString(txtTotalOrder.Text, fntString,
                    Brushes.Black, 640, 980, fmtString);
    
        fntString = new System.Drawing.Font("Times New Roman",
    					10, FontStyle.Bold);
                e.Graphics.DrawString("Recommendations:", fntString,
                    Brushes.Black, 100, 900);
        fntString = new System.Drawing.Font("Times New Roman",
    					10, FontStyle.Regular);
        e.Graphics.DrawString(txtRecommendations.Text, fntString,
                    Brushes.Black, new RectangleF(100, 920, 350, 280));
    }
  44. Return to the form
  45. On the form, click File and double-click Print
  46. Implement its Click event as follows:
     
    private void mnuFilePrint_Click(object sender, EventArgs e)
    {
        if ( dlgPrint.ShowDialog() == DialogResult.OK)
        {
            docPrint.Print();
        }
    }
  47. Execute the application and open one of the previously saved orders
  48. On the main menu of the form, click File -> Print and click OK
  49. After using it, close the form and return to your programming environment
 

Home Copyright © 2007 FunctionX, Inc.