需要在windows窗体应用程序上显示对象的帮助



我希望能够单击"计算工资"按钮来浏览员工对象,并显示每个对象的工资。问题是它不会越过第一个。如果答案很明显,我很抱歉。

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();
}
}

}
}

将index作为类变量,并在按钮CalcPay_Click的末尾递增。如果你想循环该索引,在递增的同时检查它是否大于3——如果是,再次将其设置为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而不是字符串。使用

System.Text.StringBuilder sBuilder = new StringBuilder();
sBuilder.Append("Your text goes here");
sBuilder.Append("nAnother text");

以附加文本。然后在需要时使用将其转换为字符串

sBuilder.ToString();

希望能有所帮助。

相关内容

最新更新