假设我们有这些类:
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
private Controller controller;
private uControl uc; //user control
public static Singleton Instance
{
get { return Singleton.instance; }
}
public Controller GetController
{
get
{
if (this.controller == null)
{
this.controller = new Controller();
}
return this.controller;
}
}
public uControl UC
{
get
{
if (this.uc == null)
{
this.uc = new uControl();
}
return this.uc;
}
}
}
public uControl : UserControl
{
Controller controller = Singleton.Instance.GetController;
// Do some work with controller class here ...
}
public Form1 : Form
{
public Form1()
{
this.Controls.Add(Singleton.Instance.UC);
}
}
public Form2 : Form
{
public Form2()
{
this.Controls.Add(Singleton.Instance.UC);
}
}
是否可以通过Singleton将用户控件uControl添加为两种不同的形式,并期望它们在访问同一控制器类时能够正常工作?
当我尝试这个时,只有首先实例化的表单才能正确显示uControl。另一个表单将获得uControll OK,但在用户控件应该是的表单中只显示空格...
答案 0 :(得分:0)
你绝对不想那样做。控件的事件,它的位置和用户控件的许多其他东西来自它的父控件,并与之关联。你可以做的是返回一个新的用户控件,其中包含你自己的属性,如宽度和事件处理程序