[英]Calling a function in the main Form from another Class in C#
如何从另一个类调用位于Form类中的函数?
这是我的代码。我想在prog
类中调用get_data(data)
吗?
谢谢。
public partial class Form1 : Form
{
get_data(int mydata)
{
//code
}
//code
prog var1=new prog();
var1.start_data();
}
public class prog
{
public void start_data()
{
Thread ct=new Thread(do);
ct.start();
}
private void do()
{
int data=40;
get_data(data); ///?????????????this is wrog
}
}
如果您需要访问主窗体的当前实例,则可以将其传递给类:
public partial class Form1 : Form
{
internal void get_data(int mydata)//Change to internal or public, as default is private
{
//code
}
private void button1_Click(object sender, EventArgs e)
{
prog var1 = new prog();
var1.start_data(this);//pass along instance of your main form
}
}
public class prog
{
private Form1 MainForm;
public void start_data(Form1 form)
{
MainForm = form;//set form
Thread ct = new Thread(doSmt);
ct.Start();
}
private void doSmt()
{
int data = 40;
MainForm.get_data(data); //use form
}
}
在可以从另一个类调用方法之前,需要该类的实例。 一种方法是创建一个新实例。
但是我想您已经有一个此类的实例了,因为它是一个表单,我想您可以在任何地方打开该表单。 只需使用此实例。
提示:我不会在表单中添加任何业务逻辑。 我会把它放在另一个班级。
private void do()
{
int data=40;
Form1 form = new Form1();
form.get_data(data);
}
不要忘记将get_data方法公开,因为当它是私有的时,您不能在另一个类中访问它。
该方法不是静态的,因此您需要实际实例化Form1类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.