窗体不包含带有0个参数的构造函数

时间:2019-04-23 09:08:00

标签: c# visual-studio winforms

FORM 1

public partial class Login : Form
{
    string cons =ConfigurationManager.ConnectionStrings["SSBarConnection"].ConnectionString;

    public Login()
    {
        InitializeComponent();
    }
    public class passData
    {
        public string UserRole = "";  
    }
    private void btn_login_Click(object sender, EventArgs e)
    {
        try
        {

            if (output == "1" && output2 != "")
            {
                passData s = new passData();
                s.UserRole = output2.ToString();
                Main FRFM1 = new Main();
                FRFM1.Show();
            }
        }

FORM 2

namespace SSBar
{
    public partial class Main : Form
    {
        SSBar.Login.passData s;
        public string sa;

        public Main(Login.passData s1)
        {
            InitializeComponent();
            s = s1;
        }
 private void Main_Load(object sender, EventArgs e)
        {   
            sa=s.UserRole;
            ss_user.Text = s.UserRole;
        }
    }

1 个答案:

答案 0 :(得分:0)

class SomeClass
{

}

class SomeClass
{
    public SomeClass()
    {
        //we will leave this empty
    }
}

这两个类是相同的类。在第一种情况下,我们没有任何构造函数,在第二种情况下,我们有构造函数,但它不需要任何参数。

如果我们这样做:

class SomeClass
{
    public SomeClass(string GiveMeArgument)
    {

    }
}

class SomeClass
{
    public SomeClass()
    {
        //we will leave this empty
    }


    public SomeClass(string GiveMeArgument)
    {

    }
}

这两个类不相同。现在,您问自己“为什么不做,只有做的一件事情是添加了另一个可用于创建对象的构造函数,但我们对两个类都做过”,答案是我们确实添加了相同的构造函数,但这是一条黄金法则:`If class没有ANY构造函数,它的行为就像它具有空的构造函数(就像我的第一个代码一样),但是如果类至少具有一个构造函数,则它的默认行为将不再有效。”因此,如果我们看一下第二个示例,当我们添加了需要参数的构造函数时,我们就放弃了默认类的行为,即该类的默认行为是不带参数。

您在Main类中有相同的交易。要解决该问题,只需添加构造函数,该构造函数除了已创建的构造函数外不带任何参数。