好的,所以我一直在尝试获取此任务中所有员工的总件数、工人人数、总工资和平均工资的摘要。但是,当我在程序运行时单击程序中的“摘要按钮”时,我不断收到一条错误消息。“EX0406.exe 中发生了‘System.NullReferenceException’类型的未处理异常附加信息:对象引用未设置为对象的实例。”
那是我收到的错误消息。我不太确定该怎么做。
看到我被卡住了,我的代码不完整,但如果我能提供任何有关如何让我的摘要显示的帮助,我将不胜感激。我是编程新手。如果我需要更具体,请告诉我。
这是我所拥有的:
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)
{
}
}
}