I want to be able to click on the Compute Pay button to move through the employee objects and display a paycheck for each one. the problem is that it wont move past the first one. Sorry if the answer is obvious.
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private const int SIZE = 4; // the size of the array
// create array to hold employee references
Employee[] employees = new Employee[SIZE];
public Form1()
{
InitializeComponent();
// Create some employee objects
employees[0] =
new Hourly(1, "H. Potter",
"Privet Drive", "201-9090", 40, 12.00);
employees[1] =
new Salaried(2, "A. Dumbledore",
"Hogewarts", "803-1230", 1200);
employees[2] =
new Hourly(3, "R. Weasley",
"The Burrow", "892-2000", 40, 10.00);
employees[3] =
new Salaried(4, "R. Hagrid",
"Hogwarts", "910-8765", 1000);
}
private void buttonCalcPay_Click(object sender, EventArgs e)
{
int index = 0;
string ostring = ("Fluffshuffle Electronics check no.");
ostring += string.Format("{0}", index);
ostring += Environment.NewLine;
ostring += Environment.NewLine;
ostring += " pay to the order of";
ostring += employees[index].Name;
ostring += Environment.NewLine;
ostring += string.Format("{0:C}", employees[index].CalcPay());
ostring += Environment.NewLine;
ostring += Environment.NewLine;
ostring += " First National Bank";
textBoxCheck.Text = ostring;
textBoxName.Text = employees[index].Name;
textBoxAddress.Text = employees[index].Address;
textBoxPhone.Text = employees[index].PhoneNum;
textBoxEmpNum.Text = string.Format("{0}", employees[index].EmpNum);
index++;
//see if object is hourly
Hourly someEmp1 = employees[index] as Hourly;
if (someEmp1 != null)
{
textBoxHours.Text =
string.Format("{0:F2}", someEmp1.HoursWorked);
textBoxWage.Text =
string.Format("{0:F2}", someEmp1.HourlyWage);
textBoxSalary.Clear();
}
//not hourly, must be salary
Salaried someEmp2 = employees[index] as Salaried;
if (someEmp2 != null)
{
textBoxHours.Clear();
textBoxWage.Clear();
textBoxSalary.Text = string.Format("{0:F2}", someEmp2.Salary);
}
else
{
buttonCalcPay.Enabled = false;
textBoxName.Clear();
textBoxAddress.Clear();
textBoxEmpNum.Clear();
textBoxPhone.Clear();
textBoxHours.Clear();
textBoxWage.Clear();
textBoxSalary.Clear();
}
}
}
}
Make index as class variable and increment it at the end of buttonCalcPay_Click. If you want to loop that index, while incrementing check if it greater than 3 - if yes set it to 0 again.
Always when you click "buttonCalcPay" button you set index to zero it the reason that you always get first employee. Declare it where you have declared varible as following: 变量的位置声明它,如下所示:
private const int SIZE = 4; // the size of the array
private int index = 0;
Then in your button click event write the following code:
private void buttonCalcPay_Click(object sender, EventArgs e)
{
if(index < SIZE)
{
//Your code goes here
}
index++;
}
And I think you should use System.Text.StringBuilder instead of string. Use
System.Text.StringBuilder sBuilder = new StringBuilder();
sBuilder.Append("Your text goes here");
sBuilder.Append("\nAnother text");
to append text. Then convert it to string when you need using:
sBuilder.ToString();
Hope it helps.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.