如何将参数传递给调用表单?

时间:2014-05-15 17:00:08

标签: c# winforms design-patterns singleton

以下是带有Singleton模式的Form的代码。

private Form1(int number = -1)
        {
            test_number = number;
            InitializeComponent();
        }
        private static Form1 _Instance;
        public static Form1 Instance
        {
            get
            {
                if (_Instance == null)
                    _Instance = new Form1();
                return _Instance;
            }
        }

我在构造函数中设置了int number = -1,因为没有它,它会在这里工作:

if (_Instance == null)
                        _Instance = new Form1();

但是当我想以其他形式打电话给这个表格时:

Form1 f = new Form1(n);

但是这里出现了错误:

Error   2   'KR.Form1' does not contain a constructor that takes 1 arguments

如何使用Singleton模式传递参数?

2 个答案:

答案 0 :(得分:1)

您似乎希望您的Singleton存储变量。创建一个设置变量的函数,并将构造函数留空。

答案 1 :(得分:0)

不要在构造函数中使用默认值。对于你的单身人士,如果你不想使用它,只需传递默认值零。或者,定义两个构造函数,一个没有您的参数,另一个使用它。

此外,如果要使用其他Form(或任何其他类)的构造函数,则不能将其定义为private。将其定义为public

public Form1(int number) : this() //call the default constructor so that InitializeComponents() is still called
{
    test_number = number;
}

public Form1()
{
    InitializeComponent();
}