如何使Windows窗体始终显示在顶部?

时间:2009-07-18 10:01:56

标签: c# .net winforms visual-studio-2008

我正在使用VSTS 2008 + C#+ .Net 2.0来开发Windows窗体应用程序。在默认的Form1中,我有一个按钮,然后单击该按钮将调用另一个Form - Form2。

我的问题是,我想让Form2始终位于顶部,即用户必须响应Form2(在Form2中填写信息并关闭它),直到用户可以继续处理Form1。如何实现这个功能?

这是我目前的代码。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Visible = true;
    }
}

5 个答案:

答案 0 :(得分:16)

完全按照自己的意愿做的最佳选择是使form2成为一个对话框。您可以通过调用

来完成此操作
form2.ShowDialog()

方法

答案 1 :(得分:8)

试试这个

this.TopMost = true;

答案 2 :(得分:2)

您可以使用Win32 :: SetWindowPos()方法并将HWND hWndInsertAfter设置为HWND_TOPMOST,以使其保持在最顶层。

在这里查看SetWindowPos文档: http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx

[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int    cx, int cy, uint uFlags);

以下是一些例子: http://www.pinvoke.net/default.aspx/user32/SetWindowPos.html

答案 3 :(得分:1)

假设您希望阻止用户在完成Form2之前与Form1进行交互,那么您需要ShowDialog()方法。

答案 4 :(得分:0)

使用原生.NET时,无法将表单置于顶部并将其保留在那里。

Form.TopMost仅在创建时将表单设置在顶部。 Form.ShowDialog()将表单设置在该应用程序的所有形式之上,但也可以在其他应用程序后面向后抛出。

我记得我们使用一些P / Invoke-Calls来处理这种情况,但不记得究竟是什么调用。无论如何,100%从未到达,在Win2000上传播到WinXP无处不在。

相关问题