从没有按钮的代码更新 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
}
我有一个简单的问题,但我无法在任何地方找到直接的答案
我有一个 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
}