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架构,因此我将ClassProgram.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();
}