我希望能够点击“计算支付”按钮来浏览员工对象,并为每个对象显示薪水。问题是它不会超越第一个。对不起,如果答案很明显。
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();
}
}
}
}
答案 0 :(得分:1)
将index作为类变量,并在buttonCalcPay_Click结束时递增它。如果你想循环该索引,同时增加检查它是否大于3 - 如果是,则再次将其设置为0。
答案 1 :(得分:0)
总是当您点击“buttonCalcPay”按钮时,您将索引设置为零,这就是您始终获得第一名员工的原因。在声明 SIZE 变量的地方声明它如下:
private const int SIZE = 4; // the size of the array
private int index = 0;
然后在按钮单击事件中编写以下代码:
private void buttonCalcPay_Click(object sender, EventArgs e)
{
if(index < SIZE)
{
//Your code goes here
}
index++;
}
我认为你应该使用System.Text.StringBuilder而不是string。使用
System.Text.StringBuilder sBuilder = new StringBuilder();
sBuilder.Append("Your text goes here");
sBuilder.Append("\nAnother text");
附加文字。然后在需要使用时将其转换为字符串:
sBuilder.ToString();
希望它有所帮助。