如何从另一个类调用位于Form类中的函数?
这是我的代码。我想在get_data(data)
类中调用prog
?
感谢。
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
}
}
答案 0 :(得分:2)
如果您需要访问主表单的当前实例,可以将其传递给类:
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
}
}
答案 1 :(得分:1)
该方法不是静态的,因此您需要实际实例化Form1类。
答案 2 :(得分:0)
在从另一个类调用方法之前,您需要此类的实例。一种方法是创建一个新实例。
但是我猜你已经有了这个班级的一个实例,因为它是一个表格,我猜你在任何地方打开这个表格;只需使用此实例。
提示:我不会在表单中添加任何业务逻辑。我会把它放在另一个班级。
private void do()
{
int data=40;
Form1 form = new Form1();
form.get_data(data);
}
请勿忘记将get_data方法设为公开,因为当私有方法无法在其他类中访问它时。