【问题标题】:running a windows form thread while window is closed在窗口关闭时运行 Windows 窗体线程
【发布时间】:2013-02-13 18:35:27
【问题描述】:

我有一个 Windows 窗体运行一个线程,该线程读取一个字符串并将其显示在文本框中。

它有开始 - 停止按钮来开始在窗口 Main_Form 内的文本框中显示单词。

现在,我需要创建一个处理启动停止的打开表单。当您按下开始时,应该会发生同样的事情,但 Main_Form 可能会被关闭

您有一个按钮可以打开Main_Form 并查看文本框的变化

它只在我输入时有效:

m_mf = new Main_Form();
m_mf.Show();
m_mf.start();

如果我输入

m_mf.Visible = false;

或关闭程序自行杀死的主窗体窗口

【问题讨论】:

  • 设置Visible 不应导致程序关闭,除非您尝试从新线程中执行此操作(在这种情况下您会遇到异常)。你是吗?
  • 嗨,乔恩,我不想关闭程序。我希望Main_Form 中的线程运行,但是窗口是否显示。我在Opening_Form 中有一个按钮显示到Main_Form
  • 这就是我要说的。 Visible = false 也不会关闭程序。 如果您的程序关闭,那是因为您在某处有错误。该错误可能是您正在从另一个线程设置Visible
  • 如果我输入m_mf.Hide(); 程序可以工作,但它并不好,因为窗口出现又消失。所以我的问题是有没有办法在不出现窗口的情况下使用文本框(Main_Form 所做的)谢谢你的回答!

标签: c# winforms


【解决方案1】:

您是否尝试过使用 Hide() 而不是 visible = false:

m_mf.Hide();

如果您使用m_mf.Close(); 将完全关闭程序。

This article 可能会对您有所帮助。

【讨论】:

  • Hide() 与设置Visible = false 完全相同。在documentation“隐藏控件相当于将Visible属性设置为false”
  • 实际上 m_mf.hide() 有效!但是有没有办法让它工作而不显示窗口弹出?
【解决方案2】:

你的意思是在m_mf关闭后运行一个新表单吗,在你的main函数中你可以修改如下:

 Application.Run(new m_mf());
 Application.Run(new Form1());

【讨论】:

  • 嗨,我不想运行 2 个程序,我只想运行运行程序。在 program.cs 中,我想将其保留为 Application.Run(new Opening_Form());,然后在 Opening_Form 中按 start 以使 Main_Form 线程运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多