поймать событие управления пользователем - PullRequest
0 голосов
/ 28 мая 2009

Я создал пользовательскую клавиатуру управления ... когда вы нажимаете на кнопку на клавиатуре, генерируется событие button_click, и при нажатии кнопки C * 1002 появляется строка с примером параметра.

CButton_Click
{
txt="C";
}

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

Это для сенсорного экрана.

1 Ответ

3 голосов
/ 28 мая 2009

Вы должны объявить собственное событие в UserControl и запустить событие при необходимости. Используя ваш пример:

public event EventHandler ButtonClicked;

protected override OnButtonClicked(EventArgs e)
{
    var hand = ButtonClicked;
    if (hand != null)
        hand(this, e);
}

private void CButton_Click(Object sender, EventArgs e)
{
    txt = "C";
    OnButtonClicked(new EventArgs());
}

Затем вы можете подписаться на событие UserControl ButtonClicked из другого кода.

Однако лучшим способом может быть создание собственных EventArgs и передача строки в самом событии вместо простого сохранения последнего нажатия клавиши в поле. Примерно так:

public KeyboardEventArgs : EventArgs
{
    public KeyboardEventArgs()
        :base()
    {
    }

    public KeyboardEventArgs(char Key)
        :this()
    {
        this.Key = Key;
    }

    char Key {get; set;}
}

public event EventHandler<KeyboardEventArgs> ButtonClicked;

protected override OnButtonClicked(KeyboardEventArgs e)
{
    var hand = ButtonClicked;
    if (hand != null)
        hand(this, e);
}

private void CButton_Click(Object sender, EventArgs e)
{
    OnButtonClicked(new KeyboardEventArgs("C"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...