C# 如何将Windows窗体置于顶部?

C# 如何将Windows窗体置于顶部?,c#,winforms,C#,Winforms,我正在用C#开发一个windows窗体应用程序。当一种特殊的外部事件发生时,这个应用程序在窗体上显示一些文本(例如,假设我想在鼠标位置y=0时在窗体上写“鼠标在上面一行”)。当事件发生时,我需要将窗体置于其他窗口的顶部。尝试使用此选项 yourForm.TopMost = true; 在窗体类中使用此选项: public void BringToTop() { //Checks if the method is called from UI thread or not if (

我正在用C#开发一个windows窗体应用程序。当一种特殊的外部事件发生时,这个应用程序在窗体上显示一些文本(例如,假设我想在鼠标位置y=0时在窗体上写“鼠标在上面一行”)。当事件发生时,我需要将窗体置于其他窗口的顶部。

尝试使用此选项

yourForm.TopMost = true;

在窗体类中使用此选项:

public void BringToTop()
{
    //Checks if the method is called from UI thread or not
    if (this.InvokeRequired)
    {
        this.Invoke(new Action(BringToTop));
    }
    else
    {
        if (this.WindowState == FormWindowState.Minimized)
        {
            this.WindowState = FormWindowState.Normal;
        }
        //Keeps the current topmost status of form
        bool top = TopMost;
        //Brings the form to top
        TopMost = true;
        //Set form's topmost status back to whatever it was
        TopMost = top;
    }
}
根据需要,您只需执行
form.Activate()

附言。
您可能会发现它也很有用。

如何从外部事件将其设置为真?如果最小化窗口,它将不起作用。它会给我运行时错误。从异常消息中,我想我无法更改另一个线程的值。我编辑了您的问题以使其更清晰,但仍然不清楚,“鼠标位置y=0”是什么意思?您必须将MDIPATER和MDICILD用于不同的类,并在前面显示、激活或其他任何内容。@Sayse:这一点都不重要。我只是想举一个事件的例子。我测试了它,它真的很有效。谢谢。我从另一个人那里得到了帮助,我知道我只是把它传给你。