我正在使用以下代码在新线程中打开表单:

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/

10-11 22:12
查看更多