编写一种方法来服务稍微不同的场景C#

时间:2014-04-25 12:36:24

标签: c#

我努力争取这个标题,但希望我能在这里解释一下。我正在尝试编写一个程序,通过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);
    }

1 个答案:

答案 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);
}

等等。