【问题标题】:loop in GUI, displaying n times [closed]在 GUI 中循环,显示 n 次 [关闭]
【发布时间】:2019-08-04 02:42:19
【问题描述】:

在按钮方法中的以下代码中,当'work hours'超过40时,程序需要显示“Bonus!”在表格上三次。

我的问题是......我们如何在这种形式中使用循环(for循环/while循环最简单的方法)而不是简单的if语句?

我只是想知道在多次显示消息时最简单的循环形式是什么。

非常感谢, 亚历克斯·德尔

double hrsWorked;
double payRate, Salary;
hrsWorked = Convert.ToDouble(textBox1.Text);
payRate = Convert.ToDouble(textBox2.Text);
Salary = hrsWorked * payRate;

//need to use a loop (either for loop or while loop saying if no. hours is more than 40 (41, 42, 43, ...) 
//shows 'Bonus' three times and when recalculate for any keyed in input again shows 3 times 'Bonus' before its Calculation as shown in the expected output image.





//if (hrsWorked > 40)
//{
//    label3.Text = "Bonus";
//    label4.Text = "Bonus";
//    label5.Text = "Bonus";
//}

label6.Text = "calculated amount is " + Salary;

【问题讨论】:

  • 那你要三遍还是四遍?决定。
  • 我不明白你在做什么。请提供一个好的minimal reproducible example准确地解释该代码的作用,您希望它做什么,以及具体您无法弄清楚什么。您发布的代码中的循环很荒谬,因为它将运行大约 20 亿次迭代(即直到 num1 变量溢出并以负数结束)。更不用说您似乎正在修改循环中的实际工作时间变量。请改进这个问题。阅读How to Ask,了解如何以清晰、可回答的方式提出您的问题。
  • 感谢您的反馈和评论,是的,我需要改进代码和问题,而我在代码中使用的 for 循环不是答案,只是表明我需要改进的想法以某种方式使用 for 循环,需要改进我提出这个问题的方式,再次感谢。
  • 再次感谢 Sweeper 和 Peter 的 cmets 和反馈。我已经编辑并改进了这个问题:对我在代码中评论过的问题的进一步澄清是:需要使用循环(for循环或while循环说如果没有。小时超过40 (41, 42, 43, ...) 显示并显示单词“Bonus”三次,当重新计算任何键入的输入时,在其计算之前再次显示 3 次“Bonus”,如预期的输出图像所示。

标签: c# winforms datetime text double


【解决方案1】:

从您当前的工作小时数倒数到 40,并使用多行文本框或带换行的标签:

StringBuilder sbResults = new StringBuilder();
for(double i = num1; i  > 40; i--)
{
   // Each loop iteration here is one hour over 40 hours
   sbResults.AppendLine("Bonus!");
}
YourMultilineControl.Text = sbResults.ToString();

如果您只希望每 10 小时结束一行,则将 i-- 更改为 i -= 10。

顺便说一句,你真的应该养成立即给事物起好名字的习惯。不要在此处发布带有“num1”、“TextBox1”和“label3”名称的问题 - 查看代码时无法确定它们所指的内容。相反,请使用“numWorkHours”和“txtWorkHours”等.

哦,最后一点 - 循环可能不是最有效的方法。减去总小时数 - 40 以找出超过 40 小时的小时数,然后根据需要使用该数字重复字符串。

【讨论】:

  • 您是否将“YourMultilineControl”更改为实际多行文本框或标签的实例?
  • 这个类型很好。已编辑。我同意这不是很清楚 - 我是基于 OP 在循环中的初始尝试。
  • 非常感谢您的回答和反馈。
  • 有没有办法使用 for 循环/while 循环来说明工作时间是否超过 40 小时,而不是使用我在上面代码中使用的那个 IF 语句,我们在这个中使用循环GUI 窗体窗口?
  • 当我尝试过这段代码时,如果我继续使用高于 40 的任何其他值(例如,41、53、76),它会保留“Bonus”这个词并添加更多 Bonus到表单,我的意思是它不会重新启动到 3 次显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2023-03-13
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多