增加表单中的整数

时间:2013-11-06 17:30:01

标签: c# winforms

在我的Form1中,我有以下整数:

public static int completed;

我的课程中有多个班级; Runner是超类,如果您有Expert : RunnerBeginner : RunnerDisabled : Expert

我的表单上基本上有三个numericUpDown框,供用户输入数字来表示时间(小时,分钟和秒)。还有一个名为lstRunners的列表框,它使用对象数组填充,如下所示:

Runner[] runnerList;
runnerList = new Runner[10];

我有一个名为btnFinish的按钮。我想要做的是在名为Expert的{​​{1}}类中添加一个方法,如果所选的Expert或Disabled运行程序完成运行,我希望基本上将CountFinished24()整数递增1在24:00:00或更低。这必须仅针对专家和残疾选手进行录制。我不确定我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

向Runner添加一个虚拟的OnFinished()方法,由btnFinish调用。为Expert和Disabled重写此方法,如果在24h内完成了比赛,则递增完成的整数

答案 1 :(得分:0)

刚刚详细介绍了Weyland的回答,你可能在Runner课程中有类似的内容:

 protected virtual int OnFinish(int h, int m, int s) 
 { 
      return 0;
 }

然后在ExpertRunner / DisabledRunner中,只需添加ovverride关键字即可覆盖OnFinish:

 protected override int OnFinish(int h, int m, int s)
 { 
      //IF the total time is less than 24:00:00
           return 1;
      else
           return 0;
 }

然后在你的表格上......

 private void btnFinish_Click(object sender, EventArgs e)
 {
      completed += myExpertRunner.OnFinish(numericHour, numericMinute, numericSecond);
 }

您可能希望使用某种自定义对象(或DateTime)以更易于消费的方式存储H:M:S。但无论如何......

本质上,override允许您使用一个方法,该方法使用相同的参数并使用相同的名称,但行为不同。

一个超常见的例子是属于所有对象的ToString()方法。当您调用此方法时,它可能只是将对象类型作为字符串返回。其他对象重写此ToString()方法并返回不同的内容。例如,StringBuilder类' ToString方法返回一个字符串,每个"元素"在它。

阅读MSDN上的override关键字。它也有例子。在他们的第一个例子中,他们使用抽象类,但在第二个例子中,他们做了一些更类似于我在这里写的东西。