C# 下面的代码实际上是如何工作的?
我目前正在开发一个相当简单的Windows窗体,它允许我在文本字段中键入诸如名称和编号之类的信息,然后将其添加到列表视图中。信息是以另一种形式输入的,我在计算如何从Form2访问Form1中的C# 下面的代码实际上是如何工作的?,c#,forms,winforms,C#,Forms,Winforms,我目前正在开发一个相当简单的Windows窗体,它允许我在文本字段中键入诸如名称和编号之类的信息,然后将其添加到列表视图中。信息是以另一种形式输入的,我在计算如何从Form2访问Form1中的列表视图时遇到了一些问题 我发现下面的代码工作得很好 表格1: private void button1_Click(object sender, System.EventArgs e) { Form2._Form1 = this; Form2 form2 = new Form2();
列表视图时遇到了一些问题
我发现下面的代码工作得很好
表格1:
private void button1_Click(object sender, System.EventArgs e)
{
Form2._Form1 = this;
Form2 form2 = new Form2();
form2.Show();
}
表格2:
public static Form1 _Form1;
现在,我只想知道两件事。这实际上是做什么的?我必须使用静电吗?
抱歉,如果这是一个非常模糊的问题,我只是想知道我到底在做什么
这实际上是做什么的
它将静态字段(由Form2
的所有实例共享)设置为form1实例。然后创建一个Form2
实例并显示它
我必须使用静电吗
否-只有当Form2
的所有实例都应共享回同一Form1的相同引用时,才使用static。
因为这很可能不是必需的,所以我认为实例字段和构造函数参数(以确保字段已设置)更合适:
private Form1 _Form1;
public Form2(Form1 form1)
{
this._Form1 = form1;
}
然后在单击事件处理程序中:
private void button1_Click(object sender, System.EventArgs e)
{
Form2 form2 = new Form2(this);
form2.Show();
}
我还鼓励使用更具描述性的表单/字段名称:)请学习阅读C语言文档。您的问题确实过于宽泛,但从根本上讲,您似乎在问什么是静态
字段。有关静态
成员的一般情况和特定字段的详细概述,请参见副本。您发布的代码只是将Form2
中的static
字段设置为当前Form1
实例。假设Form2
可以访问Form1
实例的成员。坦率地说,这是一种可怕的做法。Form2
根本不可能直接引用Form1
,如果它确实需要它,应该将它传递到构造函数中。另请参阅以WinformsForm
对象为主要示例,了解有关如何处理对象间交互的更好建议(该建议一般适用,但该问题具体涉及表单
对象).我是在这里创建类变量吗?当我创建int或string时,我可以很容易地知道它是什么类型的变量。但是,当您输入类的名称而不是int、string、bool等时,它是什么类型的变量?它是对该类型(或null)实例的引用。这与您的代码之间的唯一区别是“变量”(精确地说是一个字段)是静态的-我的不是。