Я работаю в проекте winforms C #, и у меня есть пользовательский элемент управления, который загружается при его выборе из меню панели инструментов. У меня есть поиск по словарю, установленный при загрузке формы пользовательского элемента управления для других функций. Кроме того, когда я закрываю пользовательский элемент управления, я просто использую ".Hide ();" метод. Я заметил, что когда я загружаю пользовательский элемент управления в первый раз, все в порядке, но когда я закрываю его и выбираю открыть его снова во 2-й раз, он создает новый экземпляр объекта, тем самым отбрасывая мой словарный поиск. Поэтому я написал некоторый код в попытке решить проблему.
Мне нужно как-то сказать, что если экземпляр пользовательского элемента управления уже существует, не создавайте новый экземпляр этого объекта. Вместо этого просто сделайте пользовательский элемент управления видимым снова. Поэтому я написал код в попытке достичь этой цели. Когда я выбираю предмет в первый раз, все нормально. Когда я скрываю пользовательский элемент управления и пытаюсь открыть его снова, ничего не происходит.
Ниже приведен код, который я написал для этой цели и который появляется при выборе элемента в меню панели инструментов:
if (Controls.ContainsKey("CheckAvailUserControl"))
{
Controls["CheckAvailUserControl"].Dock = DockStyle.Fill;
Controls["CheckAvailUserControl"].Visible = true;
Controls["CheckAvailUserControl"].Show();
Controls["CheckAvailUserControl"].Refresh();
}
else
{
UserControl checkAvailUserControlLoad = new CheckAvailUserControl();
Controls.Add(checkAvailUserControlLoad);
checkAvailUserControlLoad.Dock = DockStyle.Fill;
checkAvailUserControlLoad.Visible = true;
checkAvailUserControlLoad.Show();
}
Когда я прослеживаю свой код в отладчике, он фактически попадает в правильные части приведенного выше оператора if / else. Он просто не отображает пользовательский элемент управления на экране во второй раз, когда я пытаюсь загрузить его.
Вопрос в том, как заставить пользовательский элемент управления корректно загружаться после его закрытия, а затем снова выбрать его из меню на панели инструментов?