从没有按钮的代码更新 WinForm 标签值

Updating a WinForm label value from code without buttons

我有一个简单的问题,但我无法在任何地方找到直接的答案

我有一个 C# 程序,它在用户按下 "start" 按钮后执行一个计数器。所以 1、2、3 等,但是增量是在随意的不同持续时间下执行的,即

1 -> [4 seconds after] 2 -> [7 seconds after] 3 -> etc

每毫秒检查一次程序

我想在 GUI 上添加一个指示,让用户知道已达到的人数

我正在考虑使用单词 "Counter:"

的标签来获取它
// CounterLabel
// 
this.CounterLabel.Anchor = ((System.Windows.Forms.AnchorStyles)
    ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.CounterLabel.AutoSize = true;
this.CounterLabel.Location = new System.Drawing.Point(1090, 35);
this.CounterLabel.Name = "CounterLabel";
this.CounterLabel.Size = new System.Drawing.Size(58, 17);
this.CounterLabel.TabIndex = 52;
this.CounterLabel.Text = "Counter:";

但是我有两个问题:
1) 我是否需要一个只读文本框来承载不断变化的号码

// 
// CounterValue
//
this.CounterValue.Anchor = ((System.Windows.Forms.AnchorStyles)
    ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.CounterValue.BackColor = System.Drawing.SystemColors.Control;
this.CounterValue.Location = new System.Drawing.Point(1149, 32);
this.CounterValue.Name = "CounterValue";
this.CounterValue.Size = new System.Drawing.Size(84, 22);
this.CounterValue.TabIndex = 53;
this.CounterValue.ReadOnly = true;
//this.CounterValue.Text += this.GetCounterValue();

或者有一种方法可以只使用标签吗?
2)如何执行控件来查看是否要更新UI?我的意思是,要显示的值每毫秒检查一次,我希望界面也每毫秒更新一次[不使用 "update" 按钮要求显示达到的值]

提前感谢那些愿意提供帮助的人

1) 是的,您需要标签旁边的只读文本框。

2) 在表单中添加方法如下:

void UpdateCounter()
{
    if (InvokeRequired)
    {
        BeginInvoke(new MethodInvoker(UpdateCounter));
        return;
    }
    CounterValue.Text = Counter.ToString();
}

3) 每次更改计数器时调用此方法。

或者您可以使用计时器来调用 UpdateCounter 函数。

另一种选择是使用定时器控制它会自动改变值

 timer1.star();
private void timer1_Tick(object sender, EventArgs e)
{
//Your code
}