繁体   English   中英

从C#中的另一个类在主窗体中调用函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM