Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows窗体项目中,在主窗体内初始化类窗体实例的原因是什么?_C#_.net_Winforms_Oop_Model View Controller - Fatal编程技术网

C# 在Windows窗体项目中,在主窗体内初始化类窗体实例的原因是什么?

C# 在Windows窗体项目中,在主窗体内初始化类窗体实例的原因是什么?,c#,.net,winforms,oop,model-view-controller,C#,.net,Winforms,Oop,Model View Controller,我创建了一种测试项目,其名称为:WinFormsMVC。 我在这个项目中使用了MVC架构,因此我将ClassProgram.cs放在文件夹Controllers中,然后在文件夹Models中创建了一个类,并将其命名为:UserInfo,这是我的UserInfo.cs: namespace WinFormsMVC.Models { public class UserInfo { public string Name { get; set; } pu

我创建了一种测试项目,其名称为:
WinFormsMVC
。 我在这个项目中使用了MVC架构,因此我将Class
Program.cs
放在文件夹
Controllers
中,然后在文件夹
Models
中创建了一个类,并将其命名为:
UserInfo
,这是我的UserInfo.cs:


namespace WinFormsMVC.Models
{
    public class UserInfo
    {
        public string Name { get; set; }
        public string Family { get; set; }
        public string Email { get; set; }
    }
}
然后我创建了文件夹
Views
,然后在其中创建了一个Windows窗体应用程序,并将其命名为:
FirstForm
。 现在我有一个MVC架构的项目

我在
FirstForm
code-behind中将UserInfo定义为属性。 在下面课程的第一行,我定义了它:

 public partial class FirstForm : Form
    {
        public UserInfo UserInfo { get; set; }
        public FirstForm()
        {
            InitializeComponent();
        }

        private void txtFName_TextChanged(object sender, EventArgs e)
        {
            UserInfo.Name = txtFName.Text;
        }

        private void txtLName_TextChanged(object sender, EventArgs e)
        {
            UserInfo.Family = txtLName.Text;
        }

        private void txtEmail_TextChanged(object sender, EventArgs e)
        {
            UserInfo.Email = txtEmail.Text;
        }
    }
现在在
Program.cs
中,当我想要运行项目时,我必须将
info
设置为
f1.UserInfo
。 我想知道为什么将其设置为
f1.UserInfo
?因为我在类
FirstForm.cs
中设置了信息,例如,在
FirstForm.cs
中,我有:

private void txtLName_TextChanged(object sender, EventArgs e)
        {
            UserInfo.Family = txtLName.Text;
     }
那么为什么我要写:
f1.UserInfo=info而我一直在课堂上做这件事
FirstForm
?? 这是我班的主要课程:

 static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            UserInfo info = new UserInfo();

            var f1 = new FirstForm();
            f1.UserInfo = info;
            f1.ShowDialog();
        }
因为我已经在FirstForm.cs类中设置了信息

不,您所做的并不是定义一个属性-您没有将其设置为任何值。如果要将其设置为实例,可以在构造函数中执行此操作:

public UserInfo UserInfo { get; set; }
public FirstForm()
{
    InitializeComponent();
    UserInfo = new UserInfo();
}