Ok, so I have been trying to get a summary of the total number of pieces , number of workers, total pay, and average pay for all employees in this assignment. However, I keep getting an error message when I click the "Summary button" in my program while it is running. "An unhandled exception of type 'System.NullReferenceException' occurred in EX0406.exe Additional information: Object reference not set to an instance of an object."
That is the error message I receive. I'm not quite sure what to do.
My code is not complete seeing that I am stuck, but I would appreciate any help on how to get my summary to display. I am new to programming. If I need to be more specific, please let me know.
Here is what I have:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace EX0406
{
public partial class PieceworkForm : Form
{ //class variables
private string name;
private int pieces;
private string Average_Pay_Per_PERSON;
private decimal total_Pay;
private List<MyData> MyList = new List<MyData>();
public PieceworkForm()
{
InitializeComponent();
}
private void calculateButton_Click(object sender, EventArgs e)
{
//does the calculations
string name = (EmployeeNameTextBox).Text;
int pieces = Convert.ToInt32(NumOfPiecesText.Text);
if (name == "")
MessageBox.Show("You must enter a name.");
else if (pieces < 1 || pieces > 799)
MessageBox.Show("Enter a number between 1 and 799.");
else
{
MyData data = new MyData(name, pieces);
MyList.Add(data);
MessageBox.Show(string.Format("Amount Earned: {0:C}", data.Paid));
}
}
private void summaryButton_Click(object sender, EventArgs e)
{
//Display info in msg box
MyData data = new MyData(name, pieces);
MyList.Add(data);
try
{
string summaryString = ""
+ pieces.ToString()
+ "\n\n" + "Total pay:"
+ total_Pay.ToString("C")
+ "\n\n" + "Average pay per person:"
+ Average_Pay_Per_PERSON.ToString();
MessageBox.Show(summaryString, "Summary:");
}
finally
{
MessageBox.Show(SummaryOutPut.Text);
}
}
private void clearButton_Click(object sender, EventArgs e)
{ //clears the employee and number of pieces text box
EmployeeNameTextBox.Clear();
NumOfPiecesText.Clear();
}
private void clearAllButton_Click(object sender, EventArgs e)
{
EmployeeNameTextBox.Clear();
NumOfPiecesText.Clear();
SummaryOutPut.Clear();
}
private void exitButton_Click(object sender, EventArgs e)
{ //closes the program when user clicks exit
this.Close();
}
private void nameTextBox_TextChanged(object sender, EventArgs e)
{
}
public class MyData
{
public MyData(string name, int pieces)
{
//if else statements
Name = name;
Pieces = pieces;
if (Pieces < 200) //if pieces are less than 200, multiply by .50
Paid = Pieces * .50;
else if (Pieces < 400) //mulitply by .55 if less than 400
Paid = Pieces * .55;
else if (Pieces < 600) // multiply by .60 if less than 600
Paid = Pieces * .60;
else // multiply by .65 if everything else doesnt apply
Paid = Pieces * .65;
}
public string Name;
public int Pieces;
public double Paid;
}
private void SummaryOutPut_TextChanged(object sender, EventArgs e)
{
}
private void fileToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void helpToolStripMenuItem_Click_1(object sender, EventArgs e)
{
}
/* the following lines of code are menu items*/
private void aboutToolStripMenuItem_Click_1(object sender, EventArgs e)
{ //MSG box that displays name of lab and my name when clicking about and help item.
MessageBox.Show("Lab 5 by J Soto");
}
private void exitToolStripMenuItem_Click_1(object sender, EventArgs e)
{ //exit menu item that closes the windows form.
this.Close();
}
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
{ //menu item that clears the employee name and # of pieces text box.
EmployeeNameTextBox.Clear();
NumOfPiecesText.Clear();
}
private void clearAllToolStripMenuItem_Click(object sender, EventArgs e)
{ //menu item to clear all the text boxes.
EmployeeNameTextBox.Clear();
NumOfPiecesText.Clear();
SummaryOutPut.Clear();
}
private void fontToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void colorToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void calculatePayToolStripMenuItem_Click(object sender, EventArgs e)
{ //does the calculations
string name = (EmployeeNameTextBox).Text;
int pieces = Convert.ToInt32(NumOfPiecesText.Text);
if (name == "")
MessageBox.Show("You must enter a name.");
else if (pieces < 1 || pieces > 799)
MessageBox.Show("Enter a number between 1 and 799.");
else
{
MyData data = new MyData(name, pieces);
MyList.Add(data);
MessageBox.Show(string.Format("Amount Earned: {0:C}", data.Paid));
}
}
private void summaryToolStripMenuItem_Click(object sender, EventArgs e)
{
}
}
}