Winforms - WM_NCHITEST сообщение для нажатия на элемент управления

У меня есть простая форма окна без рамки и несколько элементов управления надписями (ничего, что нужно нажимать). Мне нужно было иметь возможность позволить пользователю перемещать форму, щелкая в любом месте на ней, поэтому я нашелэтот вопрос, и использовал следующий код, найденный там.

    private const int WM_NCHITTEST = 0x84;
    private const int HTCLIENT = 0x1;
    private const int HTCAPTION = 0x2;

    protected override void WndProc(ref Message m)
    {
        switch (m.Msg) {
            case WM_NCHITTEST:
                base.WndProc(ref m);

                if ((int)m.Result == HTCLIENT) {
                    m.Result = (IntPtr)HTCAPTION;
                    return;
                } else {
                    return;
                }
                break;
        }
        base.WndProc(ref m);            
    }

Это хорошо работает ... в точку. Если я щелкну где-нибудь на самой форме (фон),WM_NCHITTEST являетсяHTCLIENTтак что я могу переместить мою форму, как ожидалось. Однако если я щелкну сам элемент управления меткой, сообщение будет другим, и я не смогу сказать, что это такое.

я нашелЭта статья о различных возможных значениях дляWM_NCHITTEST но ни один из них, кажется, не то, что мне нужно.

Я понимаю, что могу отключить все свои элементы управления ярлыками, и это позволило бы мне нажимать & quot; на & quot; как будто это была сама форма, но мне интересно, есть ли лучший / другой способ сделать это.

Спасибо за помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос