繁体   English   中英

如何在 C# Windows 窗体中的原始窗体前面启动新窗体?

[英]How do I launch a new form in front of my original form in C# Windows Forms?

我正在 Visual Studio 2022 中构建一个 C# Windows 窗体应用程序。我在 Form1(启动时显示的窗体)上添加了一个按钮,将其称为 addWorkersButton。

private void addWorkersButton_Click(object sender, EventArgs e)
    {
        ExternalDeptEmployeeForm f2 = new ExternalDeptEmployeeForm();
        f2.Show();   
        f2.BringToFront();
    }

但是,我仍然通过单击按钮启动表单以显示在 Form1 后面。 我已经尝试了几种可用方法的组合来尝试实现这一点但无济于事:

private void addWorkersButton_Click(object sender, EventArgs e)
    {
        ExternalDeptEmployeeForm f2 = new ExternalDeptEmployeeForm();
        f2.Show();
        this.SentToBack();  
    }

从我发现的其他帖子中,提供的这些示例似乎在很多情况下都有效,所以我只是不确定我的项目中有什么不同会阻止这种情况。

我还尝试添加新实例化的表单 f2 以归原始表单 (Form1) 所有,然后添加 Show() 它。 我这样做是因为根据文档,微软对 AddOwnedForm() 方法说:“拥有的表单也永远不会显示在它们的所有者表单后面。” 您可以在此处的备注下找到它: https ://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.form.addownedform?view=windowsdesktop-7.0

在我的 Program.cs 文件中,在 Main() 方法中,我正在运行 Form1 的实例,然后它似乎需要 Form1 的实例在运行时存在,以便应用程序继续运行:

internal static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

如果这是一个问题,解决方法是什么? 在我看来,在 Form1 中显示 f2 应该没有问题,因为我并没有试图以任何方式关闭它或结束该进程。 任何见解将不胜感激。

采用:

f2.Show(this);

您应该调用Form.Show(IWin32Window)并将拥有的窗口/窗体作为参数(即f2.Show f2.Show() f2.Show(this) )和f2表格将显示在this表格的前面。 此外, this表单将成为f2表单的所有者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM