[英]Access form methods and variables from a class and vice versa in C#
我试图找到一种方法,可以使用实例互相访问形式和类的方法和变量。 这是我的代码:
我的表单代码是:
public partial class Form1 : Form
{
int var1 = 0;
public Form1()
{
InitializeComponent();
Glob glob = new Glob(this);
}
private void button1_Click(object sender, EventArgs e)
{
}
}
我的课程代码是:
public class Glob
{
private Form1 _form;
public Glob(Form1 parent)
{
_form = parent;
}
public int Func1()
{
return 10;
_form.var1 = 10;
}
}
我可以从类中调用表单方法,但不能从button1_Click
事件中调用类方法! 请问我的代码有什么问题?
这将永远不会设置该属性:
public int Func1()
{
return 10;
_form.var1 = 10;
}
该函数在设置属性之前返回。 您应该收到unreachable code
警告。
另外,您的var1
变量是私有的。 您需要将其公开(也要大写)。 这样可以在声明的位置之外访问它:
public int Var1 { get; set; }
另外,您希望Glob
实例处于表单级别:
private Glob _glob;
public Form1()
{
InitializeComponent();
_glob = new Glob(this);
}
然后,您可以在点击事件中调用它:
private void button1_Click(object sender, EventArgs e)
{
_glob.Func1();
}
那是因为您对glob
的作用域是构造函数的本地范围。 将其声明为模块级变量,它将正常工作。
public partial class Form1 : Form
{
int var1 = 0;
Glob glob;
public Form1()
{
InitializeComponent();
glob = new Glob(this);
}
private void button1_Click(object sender, EventArgs e)
{
glob.Func1();
}
}
[编辑]
西蒙·怀特海德(Simon Whitehead)的答案提供了您遇到的其他问题的更多详细信息,但是我的解决了您的特定问题:“为什么我不能通过单击按钮来调用glob
?”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.