我正在开发.NET WinForm应用程序。我有一个控制器A,这个控制器A将管理创建一个表单列表:FormA1,FormA2,...我有一个controllerB,这个控制器B将管理创建一个表单列表:FormB1,FormB2。
每个表单都会像MainForm中的标签一样打开,用户可以选择一个标签来显示该标签中的表单。
当用户选择FormA1时,我知道它来自控制器A,或者当用户选择FormB1时,我知道它来自控制器B.
我想知道帮助我找到用户打开的控制器对应Form的方法。给我最好的方法和我应该使用的设计模式。
感谢。
答案 0 :(得分:1)
自从我做WinForms编程以来已经很长时间了 - 但我记得每个组件都有Tag字段。您可以将选项卡的标记字段设置为控制器。完成某些操作后,请参阅活动选项卡,从标记字段中获取控制器并执行某些操作。
答案 1 :(得分: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)
{
}
}