【问题标题】:Sending values to text box during run time在运行时将值发送到文本框
【发布时间】:2013-04-03 21:33:23
【问题描述】:

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

【问题讨论】:

  • 你有一个控制台窗口一个表单?为什么?
  • 我需要计算过去五分钟内处理的消息总数。由于我需要连接到队列,因此我在控制台中分离了这些操作。最初我有一个控制台窗口。然后我添加了一个表格。这会导致任何问题吗?
  • 我真的不明白为什么要同时拥有两者。通常,应用程序是 Windows 窗体应用程序控制台应用程序,而不是两者。让它们一起工作可能相当困难,而且没有什么意义。如果需要,您可以创建两个表单来显示输出。
  • 我现在已经创建了单独的 windows 应用程序并添加了其他类文件并连接到队列。一切都像以前一样正常工作。但是在运行时仍然没有在 UI 文本框中显示值。但是在调试时,我可以看到该值已分配给 textbox.text。为什么它不能在文本框上显示?太令人沮丧了。
  • 你确定你的count方法被调用了吗?你只需要 txtLastFiveMins.Text = countValue.ToString();

标签: c# winforms


【解决方案1】:

看起来您每次输入 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;
        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多