Есть много способов сделать то, что вам нужно. Но прежде всего вам нужно провести некоторый анализ и дизайн. Узнайте, какие макеты и элементы управления необходимы, что изменится и каким образом. Определите возможные режимы или шаблоны для реализации в форме. Помогут рисунки на бумаге. Начните с одного проекта, чтобы все было очень просто, а когда он заработает, включите go с помощью пакета DLL или NuGet. Я попытаюсь объяснить очень быстрый и грязный пример с множеством предположений.
Короче говоря, мы создадим форму, которая реализует три поведения или режима. Каждый режим состоит из двух факторов:
- GUI. Элементы управления добавляются, скрываются, изменяются или перемещаются по контейнерам по мере необходимости.
- Код. Обработчики событий, частные методы и весь код для реализации того, что должен делать режим.
Каждый режим должен иметь единственный метод, выполняющий все необходимые изменения в GUI и коде.
Должно быть создано перечисление (на уровне пространства имен) со всеми необходимыми именами режимов.
public enum EditFormMode { Default, CreateClient, EditClient }
Конструктор формы должен получить один аргумент типа перечисления. И переключатель отправит выполнение методу.
{
public FormEditConfig(EditFormMode mode)
{
InitializeComponent();
switch (mode)
{
case EditFormMode.Default:
CreateDefaultMode();
break;
case EditFormMode.CreateClient:
CreateClientMode();
break;
case EditFormMode.EditClient:
CreateEditClientMode();
break;
}
}
private void CreateDefaultMode()
{ // do default stuff }
private void CreateClientMode()
{ // do create client stuff }
private void CreateEditClientMode()
{ // do edit client stuff }
}
И код для создания формы:
private FormEditConfig _theForm ;
_theForm = new FormEditConfig(EditFormMode.CreateClient);
Это основной механизм c. Как получить данные из формы в вызывающий код, очень зависит от конкретной реализации.
После того, как все режимы реализованы и протестированы, go включите и создайте новый проект для библиотеки классов, переместите файлы, добавьте ссылки на проекты, соберите решение и снова протестируйте.