【问题标题】:Windows Form App for loop not workingWindows Form App for 循环不起作用
【发布时间】:2016-02-05 17:42:40
【问题描述】:
int i = 0;
private void button1_Click(object sender, EventArgs e)
{
    for (int j = 10; j < 1000; j = j + 1)
    {
        string y = i.ToString();
        webBrowser1.Document.GetElementById("lst-ib").SetAttribute("value", y);
        i++;
    }
}

这是我在 Windows 窗体应用程序中使用的代码部分 我希望它输入值并显示它上升但是它只是跳到最后并放置最后一个输出而不是计数。 有些人说要使用计时器,但我无法让它们工作。 有什么想法吗?

【问题讨论】:

  • 设置属性后尝试调用webBrowser1.Refresh()。这将强制重绘。但是,它会(正如已删除的答案所指出的那样)更新得太快而无法看到效果。您首先要实现什么目标?
  • 它只会在谷歌搜索框中计数。只是为了测试。
  • 如果我将它放在 for 循环中而不显示任何内容,则刷新会停止操作

标签: c# windows forms for-loop


【解决方案1】:

您正在使用循环锁定 UI 线程,因此它在完成工作之前不会更新控件。当循环完成并且 UI 刷新时,您最终只能看到最终值。

看看改用Timer 控件。您可以告诉它定期引发一个事件,它会允许您的 UI 正确更新。

Timer 添加到您的Form,然后将以下代码插入到您的构造函数中进行尝试。目前,它每 1 毫秒更新一次您的元素(实际上,它不会那么快)。

int i = 0;
int j = 10;

timer1.Interval = 1;
timer1.Tick += (s, e) =>
{
    string y = i.ToString();
    webBrowser1.Document.GetElementById("lst-ib").SetAttribute("value", y);

    i++;
    j++;

    if (j > 1000)
        timer1.Stop();
};

timer1.Start();

【讨论】:

  • 它仍然没有显示进入文本框的所有内容。它只需要更长的时间来运行。(我把它缩短到只去 j
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2013-12-31
  • 2012-09-07
  • 2018-04-22
  • 2016-05-13
  • 2018-09-09
  • 1970-01-01
相关资源
最近更新 更多