在运行时将值发送到文本框

时间:2013-04-03 06:16:44

标签: c# winforms

我正在运行一个控制台应用程序。我在表单中有一个文本框。我需要在另一个类中计算最近五分钟读取的消息数,并在文本框中显示该值。当我运行代码时,我能够正确地看到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);
}

1 个答案:

答案 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;
        }
    }

}