Я занимаюсь переносом устаревшего приложения VB на C#/Winforms. Хотя подавляющее большинство пользовательского интерфейса завершено, у меня есть проблема, которую я не смог решить после некоторых копаний. Моя форма содержит кучу групповых полей, все они идентичны (за исключением некоторого идентификатора, например имени группового поля), каждый из которых содержит несколько элементов управления. У меня есть всплывающее контекстное меню, которое позволяет мне открывать дочерние формы, которые позволяют мне изменять некоторые настройки и т. д. Каждое из этих групповых полей представляет собой физический объект, который можно отключить. Когда я отключаю групповое поле, все дочерние элементы этого поля отключаются или становятся невидимыми. Когда поле группы отключено, меню контекстной полосы также меняется, так что некоторые элементы меню в контекстном меню отключаются, а затем выбор меню «Включено» переключается между отмеченным и неотмеченным, показывая текущее состояние. Проблема в том, что когда я отключаю одно из групповых полей, поле отключается, но контекстное меню больше не открывается, когда я нажимаю на групповое поле. Это не так уж удивительно, но я пытаюсь понять, как отключить групповое поле, сохраняя при этом постоянно включенным контекстное меню. Мне нужно иметь возможность отключить один или несколько из этих групповых ящиков; так обстоят дела, как только я отключу групповое поле, у меня нет возможности снова включить его, так как контекстное меню больше не срабатывает.
Старый код VB позволяет это сделать, но не совсем понятно, как это сделать, и код более или менее беспорядочный. Я бы предпочел не тратить время на обратный инжиниринг.
Спасибо за любые предложения о том, как я могу это сделать. Я полагаю, что обходной путь может заключаться в том, чтобы просто сделать все элементы управления в групповом поле невидимыми, а затем изменить цвет группового поля, чтобы он «отображался» отключенным.