Как правильно использовать «это» для доступа к элементам управления формы? - PullRequest
1 голос
/ 23 июня 2009

В моем случае у меня есть панели, но для ясности я буду использовать кнопки в моем примере.

У меня есть 5 (или более) кнопок, и я устанавливаю событие, например - OnMouseHover, для всех пяти кнопок. Как я могу получить, какая из них имеет мышь, если все события ссылаются на один метод

Чтобы захватить кнопку, где находится мышь, я попытался использовать «this», но она ссылается на саму форму.

    private void buttonX_MouseHover(object sender, EventArgs e)
    {
        this.Text = "Test";
    }

Я ожидал, что текст на указанной кнопке, где наведена мышь, изменит свой текст на «Тест», но это произошло в форме. Только для текста.

В моей настоящей программе у меня есть 60 панелей, и я снова использую один метод для всех событий OnMouseHover любого из них. Как получить панель (или кнопку в приведенном выше примере), где находится мышь?

Ответы [ 2 ]

8 голосов
/ 23 июня 2009

this всегда ссылается на экземпляр класса (форму). Вместо этого вам нужно разыграть отправителя:

((Control)sender).Text = "Test";

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

2 голосов
/ 23 июня 2009

Это всегда класс, в данном случае сама форма. Объект «отправитель» - это волшебное слово. Если это кнопка, верните ее обратно в кнопку. Поскольку объект является только ссылкой, вы можете внести изменения в отправляющий объект.

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