2011-07-28 3 views
0

Я разрабатываю приложение .NET WinForm. У меня есть контроллер A, этот контроллер A будет управлять созданием списка форм: FormA1, FormA2, ... И у меня есть контроллер B, этот контроллер B будет управлять созданием списка форм: FormB1, FormB2.Найти шаблон дизайна в этой ситуации

Каждая форма будет открыта, как вкладка MainForm, которую пользователь может выбрать вкладку, чтобы отобразить форму на этой вкладке.

Если пользователь выбирает FormA1, я знаю, что это от контроллера, или когда пользователь может выбрать FormB1, я знаю, что это от контроллера B.

Я хочу знать, как помочь мне найти контроллер соответствующую форму, которую пользователь открывает. Дайте мне лучший способ и шаблон дизайна, который я должен использовать.

Спасибо.

ответ

1

Прошло много времени с тех пор, как я программировал WinForms, но я помню, что у каждого компонента есть поле Tag. Вы можете установить поле тега табуляции на свой контроллер. Когда что-то будет сделано, обратитесь к активной вкладке, получите контроллер из поля тега и сделайте что-нибудь.

1

Являются ли контроллеры двумя разными типами (классами)? Являются ли два вида форм разными типами (классами)? В этом случае просто создайте поле, где вы передадите контроллер в форму при создании

interface IController 
{ 
    ControllerForm CreateForm(); 
} 

class ControllerA : IController 
{ 
    public ControllerForm CreateForm() 
    { 
     return new FormA(this); 
    } 
} 

class ControllerB : IController 
{ 
    public ControllerForm CreateForm() 
    { 
     return new FormA(this); 
    } 
} 

abstract class ControllerForm : Form 
{ 
    public IController Controller { get; private set; } 

    protected ControllerForm(IController controller) 
    { 
     this.Controller = controller; 
    } 
} 

class FormA : ControllerForm 
{ 
    public FormA(IController controller) 
     : this(controller) 
    { 
    } 
} 

class FormB : ControllerForm 
{ 
    public FormB(IController controller) 
     : this(controller) 
    { 
    } 
} 
Смежные вопросы