Захват всех событий щелчка в пользовательском контроле - PullRequest
0 голосов
/ 25 августа 2009

Я разрабатываю идею с настраиваемым списком, которая состоит в основном из пользовательских элементов управления, расположенных вертикально в FlowLayoutPanel. Я пишу это так, чтобы я мог добавить кнопки, которые появляются в элементе списка, когда он выбран.

Элемент управления элемента списка имеет несколько меток и несколько панелей, поэтому, чтобы определить, был ли выбран элемент списка целиком (чтобы выделить его и отобразить кнопки), мне нужно добавить обработчики событий нажатия все этикетки и панели и т. д.

Мне было интересно, есть ли более простой способ сделать это, захватив все события щелчка для элемента управления, вроде KeyPreview, но для событий щелчка.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 августа 2009

Я решил это, переопределив WndProc следующим образом:

public partial class ListItem: UserControl
{
    private const int WM_MOUSEACTIVATE = 0x0021;

    protected override void WndProc(ref Message m)
    {
        if(m.Msg == WM_MOUSEACTIVATE)
        {
            Debug.Print("Activated!");
        }

        base.WndProc(ref m);
    }
}

Я считаю, что это, вероятно, самое простое решение. Все-таки спасибо за предложения Андрей!

0 голосов
/ 25 августа 2009

добавьте прямоугольник поверх пользовательских элементов управления и нарисуйте прозрачной кистью, затем добавьте обработчик щелчков к этому.

Andrew

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...