C # WinForm; Передача группы элементов управления другому классу - PullRequest
0 голосов
/ 30 июля 2009

Это мой сценарий ... У меня есть winForm tabControl, который имеет различные поля на каждой вкладке (каждая вкладка имеет разные поля). Когда пользователь нажимает кнопку «Создать», предполагается, что он передает элементы управления со вкладки tabControl, чтобы вызываемая функция могла создавать электронную почту на основе информации о переданном элементе управления. Каждая вкладка представляет собой отдельный шаблон электронной почты. Метод может вызываться из 4 разных кнопок, каждая из которых находится на своей странице tabControl, а каждая tabControl имеет разные поля.

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

Есть идеи?

1 Ответ

1 голос
/ 30 июля 2009

Как уже упоминалось, вы можете обмануть и попробовать использовать

tabControl.Controls

для быстрого и грязного исправления.

Если вы хотите что-то, что будет работать в будущем, а также познакомите вас с лучшими методами проектирования, я бы предложил альтернативу. Создайте EmailUserControl UserControl, который содержит все эти поля формы для электронного письма. Поместите этот пользовательский элемент управления на вкладку вместо всех отдельных полей. Затем предоставьте метод в пользовательском элементе управления, который генерирует желаемое электронное письмо со всеми учтенными полями, и затем вы можете передать фактическое электронное письмо вместо всех отдельных частей и частей, которые вы можете использовать для его создания.

Конечно, в этом дизайне доступны дополнительные улучшения, но это отличная возможность для вас промокнуть и попробовать что-то немного лучше. По мере того, как вам станет удобнее работать с UserControl s, вы обнаружите дополнительные возможности для улучшения дизайна элементов управления самостоятельно. :)

...