C# 允许标题栏双击以最大化对话框,但不允许使用“最大-最小”按钮

C# 允许标题栏双击以最大化对话框,但不允许使用“最大-最小”按钮,c#,.net,winforms,C#,.net,Winforms,这是一个有点C的具体。可调整大小对话框的默认行为是,单击标题栏可使对话框最大化,再次双击可恢复大小。然而,我想要的是打开帮助按钮,这意味着最小化和最大化按钮是隐藏的,但我仍然希望标题栏双击行为。这可能通过一些子类化实现,但可能有人对此有一些好的想法。您应该能够处理WM\u NCHITTEST并查找HT\u标题,有关详细信息,请参阅 您需要覆盖WndProc才能处理这些消息,如中所示。您应该能够处理WM\u NCHITTEST并查找HT\u标题,请参阅以了解详细信息 您需要覆盖WndProc才能处

这是一个有点C的具体。可调整大小对话框的默认行为是,单击标题栏可使对话框最大化,再次双击可恢复大小。然而,我想要的是打开帮助按钮,这意味着最小化和最大化按钮是隐藏的,但我仍然希望标题栏双击行为。这可能通过一些子类化实现,但可能有人对此有一些好的想法。

您应该能够处理WM\u NCHITTEST并查找HT\u标题,有关详细信息,请参阅


您需要覆盖WndProc才能处理这些消息,如中所示。

您应该能够处理WM\u NCHITTEST并查找HT\u标题,请参阅以了解详细信息


您需要覆盖WndProc才能处理这些消息,如中所示。

谢谢,这很有帮助,除了它需要被WM_nCluButtonDBLclk替换,当然这是假设您的用户没有切换按钮…我不确定操作系统是否会看到右键单击,但会发布WM_nCluButtonDBLclk消息。谢谢,这很有帮助,除了它需要被WM_nCluButtonDBLclk替换,当然这是假设您的用户没有切换按钮…我不确定操作系统是否会看到右键单击,但会发布WM_nCluButtonDBLclk消息。
    private const int WM_NCLBUTTONDBLCLK = 0xA3;

    protected override void WndProc(ref Message m)
    {
        switch (m.Msg)
        {
            case WM_NCLBUTTONDBLCLK:
                if (this.WindowState==System.Windows.Forms.FormWindowState.Maximized)
                    this.WindowState=System.Windows.Forms.FormWindowState.Normal;
                else if (this.WindowState == System.Windows.Forms.FormWindowState.Normal)
                    this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
                return;
        }
        base.WndProc(ref m);
    }
    private const int WM_NCHITTEST = 0x0084;

    // Let Windows drag this form for us
    protected override void WndProc(ref Message m)
    {
        switch (m.Msg)
        {
            case WM_NCHITTEST:
                m.Result = (IntPtr)2;   // HTCLIENT
                return;
        }

        base.WndProc(ref m);
    }