Отмена подписки на событие _Leave не работаетC#

Место общения программистов C#
Ответить
Anonymous
 Отмена подписки на событие _Leave не работает

Сообщение Anonymous »

Это очень простая задача, но ее немного сложно объяснить (отсюда и диаграммы).

У меня есть ListView. При нажатии на элемент панель обновляется с данными выбранного элемента.

Каждый элемент имеет значение свойства 1 или 2.

Я хочу, чтобы вкладка TabControl выбиралась на панели после значения 1 или 2.
Изображение

Панель имеет событие Leave.

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

Когда элементы ListView с последовательным щелчком имеют одно и то же свойство (1 или 2), TabControl остается неизменным.
Изображение

Проблема возникает, когда TabControl необходимо изменить (с 1 на 2 или наоборот).
Изображение

Событие `Leave` срабатывает, даже если указатель мыши не наведен на панель. Это приводит к неожиданному сохранению элемента ListView сразу после щелчка по нему во время отображения, с побочными эффектами и (я сильно подозреваю) потерей данных.

Моей первоначальной идеей было предотвратить возникновение события «Покинуть» панели во время обновления панели.

Код: Выделить всё

DonneesPanel.Leave -= DonneesPanel_Leave;
затем, после отображения:

Код: Выделить всё

DonneesPanel.Leave += DonneesPanel_Leave;
Это не работает. Не понимаю почему, тем более:

Код: Выделить всё

DonneesPanel.Enter -= DonneesPanel_Enter;
DonneesPanel.Enter += DonneesPanel_Enter;
работает!
Обзор: всякий раз, когда TabControl необходимо изменить, запускается событие _Leave панели. Форма, которая в данный момент загружается, сохраняется, и я не могу это предотвратить.
При щелчке по элементу ListView я могу обновить все в панели, включая TabControl.
Это только, когда свойства выбранного элемента требуют изменения вкладки TabControl, после отображения запускается событие выхода из панели.
Это то, чего я хочу избежать.
/>Я не использую специальный элемент управления. TabControl, ListView и Panel взяты из Windows Forms.
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... s-not-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»