我努力争取这个标题,但希望我能在这里解释一下。我正在尝试编写一个程序,通过6站装配线跟踪装配。在每个站点,操作员将点击一个按钮(例如station1start,station1stop,station2start等),按钮按下事件将时间戳发送到数据库,并通过将行进ID号移动到下一站来可视地更新表单。我有这一切都在前几个站工作,但我想知道是否有办法为每个站使用相同的方法。例如,有一个方法,如
void updateStart(int station_num)
其中,站ID将是一个参数,否则该方法可用于所有站。我知道C#中的变量无法动态更改,但如果有其他方法可以使此代码更清晰,我很好奇。使6种方法几乎相同似乎是错误的编程。特别是如果我们要增加另外6个站点。请参阅下面的表单截图,以及操作员在第2站开始时会遇到的按钮示例代码。非常感谢任何帮助!
http://i.stack.imgur.com/Ddxww.png
private void Station2Start_Click(object sender, EventArgs e)
{
Station2Label.Text = Station1Label.Text;
Station1Label.Text = "";
Station1Status.Text = "";
Station2Status.Text = "IN PROGRESS";
addTimeToDb(2);
}
答案 0 :(得分:3)
这个问题有点不清楚,但我相信它是:
我有以下代码:
private void Station2Start_Click(object sender, EventArgs e)
{
Station2Label.Text = Station1Label.Text;
Station1Label.Text = "";
Station1Status.Text = "";
Station2Status.Text = "IN PROGRESS";
addTimeToDb(2);
}
private void Station3Start_Click(object sender, EventArgs e)
{
Station3Label.Text = Station2Label.Text;
Station2Label.Text = "";
Station2Status.Text = "";
Station3Status.Text = "IN PROGRESS";
addTimeToDb(2);
}
依此类推,经过多次替换重复多次。我如何"干掉"这段代码? (那就是不要重复自己。)
创建标签和状态框时,将它们放在一个数组中:
private Label[] stationLabels;
private Label[] statusLabels;
...
// in your form initialization after the creation of the labels:
stationLabels = new [] { Station1Label, Station2Label, Station3Label, ...
// and similarly for status labels.
现在写
private void StationClick(int station)
{
stationLabels[station-1].Text = stationLabels[station-2].Text;
... and so on
然后每个方法都变成
private void Station2Start_Click(object sender, EventArgs e)
{
StationClick(2);
}
private void Station3Start_Click(object sender, EventArgs e)
{
StationClick(3);
}
等等。