我正在使用以下代码在新线程中打开表单:
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadProc);
thread.Start();
}
public void ThreadProc()
{
Form form = new Form();
form.TopMost = true;
form.ShowDialog();
}
但是即使我将其设置为true,新创建的表单也不是TopMost。
如何在TopMost线程中创建表单?
最佳答案
通常,您不需要其他线程,您可以照常在模态或非模态模式下打开表单,如果表单需要执行繁重的处理,则可以在线程内进行处理。
针对您的问题的一个选择是从Application.Run运行表格,如here所述。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(ThreadProc);
thread.Start();
}
public void ThreadProc()
{
using (Form1 _form = new Form1())
{
_form.TopMost = true;
Application.Run(_form);
}
}
}
这将启动一个具有自己的消息泵的新线程,并将其保留为TopMost形式。
关于c# - 线程中的TopMost表单?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4744271/