Как определить, отображается ли пользовательский контроль или нет в WinForms

#c#

#c#

Вопрос:

У меня есть приложение Windows forms, и я добавил меню для маневрирования между несколькими пользовательскими элементами управления. Я использую события: Click , MouseEnter и MouseLeave .

В каждом случае я меняю BackgroudImage, и я хочу добиться того, чтобы, когда изображение изменилось после события click, изображение осталось. И я думал использовать свойства пользовательского элемента управления, чтобы определить, отображается он или нет (поскольку я использую методы Show() and Hide() ).

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

Как я могу определить, отображается ли пользовательский элемент управления или нет?

Комментарии:

1. .Show() и .Hide() оба фактически изменяют только Visible свойство элемента управления. Если это не изменится, вы делаете что-то еще с элементами управления.

Ответ №1:

Свойство IsHandleCreated получает значение true при загрузке элемента управления. Попробуйте использовать это свойство.

справочный документ :https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.ishandlecreated?view=netframework-4.7.2

Ответ №2:

По-видимому, при загрузке формы для свойства Visible по умолчанию устанавливается значение True, хотя я действительно не вижу все пользовательские элементы управления (они находятся друг на друге). Итак, я добавил метод отображения и скрытия в событие загрузки формы, и свойство visible работает как шарм. Спасибо Franck