如何处理表单标题右键单击

Kum*_*mar 1 c# windows winapi winforms

我想要右键单击标题栏上的上下文菜单

c#中的任何提示/样本?

更新 - 由于各种原因,右键单击表单将无法正常工作,因为表单不为空,表单是动态合成的....

Han*_*ant 9

您可以通过捕获Windows在用户右键单击标题栏时发送的WM_NCRBUTTONDOWN通知来执行此操作.控件类没有事件,你需要覆盖WndProc().这是一个示例表单,您需要添加ContextMenuStrip:

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

    protected void OnTitlebarClick(Point pos) {
        contextMenuStrip1.Show(pos);
    }

    protected override void WndProc(ref Message m) {
        const int WM_NCRBUTTONDOWN = 0xa4;
        if (m.Msg == WM_NCRBUTTONDOWN) { 
            var pos = new Point(m.LParam.ToInt32());
            OnTitlebarClick(pos);
            return;
        }                                           
        base.WndProc(ref m);
    }
}
Run Code Online (Sandbox Code Playgroud)