在这种情况下找到一个设计模式
本文关键字:一个 设计模式 这种情况下 | 更新日期: 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)
{
}
}