2011-07-28 119 views
0

我正在开发一个.NET WinForm应用程序。我有一个控制器A,这个控制器A将管理创建一个表单列表:FormA1,FormA2,...我有一个控制器B,这个控制器B将管理创建一个表单列表:FormB1,FormB2。在这种情况下找到设计模式

每个表单都会像MainForm中的选项卡一样打开,用户可以选择一个选项卡以在该选项卡中显示表单。

当用户选择FormA1,我能知道它是从控制器A,或者当用户选择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) 
    { 
    } 
}