的形式.GotFocus禁用关闭按钮

本文关键字:关闭按钮 GotFocus | 更新日期: 2023-09-27 18:11:36

我有一个c# Windows窗体应用程序,它有一个主窗体,在它的构造函数中打开另外两个窗体。我将它们命名为side-panels。

主窗体已经处理了GotFocus事件,该事件为侧面板窗体调用form . bringtofront()。

启用此功能时(即GotFocus被处理),主表单的关闭按钮停止工作。

如何检查关闭按钮是否在事件处理程序中按下?

    public Canvas()
    {
        InitializeComponent();
        this.GotFocus += new EventHandler(WindowGotFocus);
        tool.Show();
        pp.Show();
    }
    public void WindowGotFocus(object sender, EventArgs e)
    {
        tool.BringToFront();
        pp.BringToFront();
    }

当我按下关闭按钮的主要形式,它得到焦点,WindowGotFocus方法被调用,应用程序不关闭。如果我评论这个。GotFocus += new EventHandler(WindowGotFocus);'在构造函数中,它可以工作。

我需要这个功能,以便在用户从另一个应用程序切换回该应用程序时再次显示侧板。

的形式.GotFocus禁用关闭按钮

当然不行。您导致表单失去焦点,这意味着就窗口而言,点击从未发生过。

处理这个问题的正确方法是使工具窗口成为主窗口的子窗口:

var parent = new Form();
var child = new Form();
parent.AddOwnedForm(child);
parent.Show();
child.Show();

这将自动处理你期望的行为-毕竟,你期望的行为,因为其他应用程序做完全相同的事情:)除了确保子窗口显示时,主窗口,它也关闭所有的子窗口时,父窗口关闭,除其他事项。