我正在运行一个控制台应用程序。我在表单中有一个文本框。我需要在另一个类中计算最近五分钟读取的消息数,并在文本框中显示该值。当我运行代码时,我能够正确地看到textbox.text值。但在UI中,我看不到文本框中显示的值。但我可以在运行时手动编辑文本框。
这是我的代码:
在代码隐藏中
for (int i = 1; i <= numberOfMsgs; i++)
{
if (addDateTime.AddMinutes(2).Minute==DateTime.Now.Minute)
{
//FilesProcessedInFiveMinutes();
//Thread thread1 = new Thread(new ThreadStart(FiveMinutesMessage));
//thread1.Start();
WebSphereUI webSphereUi = new WebSphereUI();
webSphereUi.count(fiveMinutesCount);
addDateTime = DateTime.Now;
}
fiveMinutesCount = fiveMinutesCount + 1;
}
在form.cs
public void count(int countValue)
{
Thread.Sleep(2000);
txtLastFiveMins.Focus();
txtLastFiveMins.Text = countValue.ToString();
txtLastFiveMins.Refresh();
txtLastFiveMins.Show();
backgroundWorker1.RunWorkerAsync(2000);
}
答案 0 :(得分:0)
每次输入if语句时,您似乎都在创建新表单。这一行正在创建一个新的WebSphereUI
表单:
WebSphereUI webSphereUi = new WebSphereUI();
然后,您在其上调用count
方法:
webSphereUi.count(fiveMinutesCount);
但接着你继续,没有显示这个表格。如果你添加:
webSphereUi.Show();
然后您可能会在屏幕上看到该表单,并按预期显示该值。但是,每次执行if语句时都会显示一个新表单。您可以通过在其他地方声明它并在循环中使用它来重用相同的表单:
class yourClass
{
WebSphereUI webSphereUi = new WebSphereUI();
...
private void yourFunction()
{
for (int i = 1; i <= numberOfMsgs; i++)
{
if (addDateTime.AddMinutes(2).Minute==DateTime.Now.Minute)
{
webSphereUi.count(fiveMinutesCount);
webSphereUi.Show();
addDateTime = DateTime.Now;
}
fiveMinutesCount = fiveMinutesCount + 1;
}
}
}