У меня есть форма окна с панелью слева, которая состоит исключительно из радиокнопок и элемента управления вкладками посередине с несколькими вкладками внутри него. Каждая из этих отдельных вкладок имеет ряд представлений сетки данных, которые отображаются и скрываются в зависимости от того, какой переключатель вы устанавливаете.
Я достигаю этого эффекта, назначая каждой радиокнопке слева событие CheckChanged, которое перебирает все элементы управления в tabpagecontrol.SelectedTab и вызывает .Show() в соответствующем представлении сетки данных и вызывает .Hide() на остальных, чтобы одновременно отображалось только одно представление сетки данных.
Моя проблема возникает, когда я пытаюсь программно проверить один из этих RadioButtons. Допустим, в методе X я пишу RadioButtonA.checked = true. Это запускает обычную обработку события CheckedChange, которая перебирает все представления сетки данных на выбранной в данный момент вкладке и вызывает .Hide() для всего, кроме одной формы представления сетки данных, которую должна вызывать радиокнопка, и вместо этого вызывает .Show(). Однако при одном из этих вызовов .Hide() в datagridview он в конечном итоге запускает событие RadioButtonA.CheckedChange СНОВА во второй раз. Когда я смотрю на аргумент отправителя, переданный функции, он показывает, что отправителем является RadioButton, на который я только что программно нажал.
Я добавляю эти datagridviews программно и могу подтвердить, что им не назначены никакие обработчики событий. Может ли кто-нибудь помочь мне определить, что вызывает это дополнительное событие? Спасибо.
Boolean
столь же эффективно... и быстрее! 02.04.2011