在这种情况下找到一个设计模式

本文关键字:一个 设计模式 这种情况下 | 更新日期: 2023-09-27 18:03:42

我正在开发一个。net WinForm应用程序。我有一个控制器a,这个控制器a将管理创建表单列表:FormA1, FormA2,…我有一个控制器B,这个控制器B将管理创建表单列表:FormB1, FormB2。

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

当用户选择FormA1时,我可以知道它来自控制器A,或者当用户选择FormB1时,我可以知道它来自控制器b。

我想知道如何帮助我找到用户打开的控制器对应的Form。给我最好的方法和我应该使用的设计模式。

谢谢。

在这种情况下找到一个设计模式

自从我做WinForms编程以来已经很长时间了-但我确实记得每个组件都有标签字段。您可以将选项卡的标签字段设置为您的控制器。当某些操作完成后,请参考活动选项卡,从标签字段获取控制器并执行操作。

控制器是两个不同的类型(类)吗?这两种形式是不同的类型(类)吗?在这种情况下,只需创建一个字段,在创建时将控制器传递给表单

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)
    {
    }
}