我在一个类中创建了两个表单和一组函数。我必须从Form1
的类中调用一些函数,并在Form2
中使用它们,并在Form1
的类中存储一些变量值,现在我在Form2上使用以下代码:< / p>
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.CheckState == CheckState.Checked)
{
GetSetRequests reqClass = new GetSetRequests();
MessageBox.Show(reqClass.RequestID.ToString());
}
}
RequestID
是在类GetSetRequests
中创建的变量。 Form1存储的值我必须在form2中使用该值,但由于类的新初始化,此值变为null。是否可以在不进行新初始化的情况下从类中调用值和函数?
答案 0 :(得分:0)
如果希望两个表单共享同一个对象实例,则需要将对象从其中一个表单传递给另一个表单。将该类型的对象添加到Form2的构造函数中,并在Form1创建它的实例时,然后将GetSetRequests传递给它。
正如其他人所提到的,你也可以给类静态属性,但这意味着它不能在其他任何地方使用。
答案 1 :(得分:0)
变量可以是静态的(或者VB.NET中的关键字更具描述性:shared
)。即变量在GetSetRequests
类的所有实例之间共享。但是,在大多数情况下,静态/共享变量是一个坏主意。
您应该将GetSetRequests
对象从Form1
传递到Form2
并让两者使用相同的实例。
因为你问这个问题,你应该阅读有趣的OOP原则。以下文章适用于Java,但类在C#中的工作方式相同:http://docs.oracle.com/javase/tutorial/java/concepts/class.html