Как сделать отправителя в обработчике событий моим пользовательским элементом управления, а не метками внутри него? - PullRequest
2 голосов
/ 22 октября 2010

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

Как я могу это сделать? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Что вы можете сделать, это разрешить пользовательскому элементу управления использовать событие метки, а в пользовательском элементе управления реализовать новое событие. Затем, когда запускается событие метки, вы можете запустить собственное событие из пользовательского элемента управления.

Например:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    public event EventHandler MyCustomClickEvent;

    protected virtual void OnMyCustomClickEvent(EventArgs e)
    {
        // Here, you use the "this" so it's your own control. You can also
        // customize the EventArgs to pass something you'd like.

        if (MyCustomClickEvent != null)
            MyCustomClickEvent(this, e);
    }

    private void label1_Click(object sender, EventArgs e)
    {
        OnMyCustomClickEvent(EventArgs.Empty);
    }
}
0 голосов
/ 22 октября 2010

Вы можете получить контейнерный объект вашей метки и привести его к своему пользовательскому элементу управления

private void Label1_Click(object sender, System.EventArgs e)
{
     Box box = (object as Label).Parent as Box;
     if(box != null)
     {
         //Do what you need here.
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...