如何使用表单';s函数在其他类C#中

本文关键字:其他 函数 表单 何使用 | 更新日期: 2023-09-27 18:23:57

我有一个Form和类。在表单中,我从对象调用一个函数,该函数在工作时必须进行一些输出。我该怎么做?

namespace Gui
{
    public partial class Form1 : Form
    {
        void PaintGui()//functioun which change the data in gui
        {
        }
        private void btnCalc_Click(object sender, EventArgs e)
        {
            //object of some class
            //function from this object which should call PaintGui() while it working
        }
    }
}

如何使用表单';s函数在其他类C#中

我认为您的意思是将一个方法作为参数传递,这样该方法就可以作为回调执行。您应该将一个方法(不带括号)传递给另一个类,并且它必须与Action<>定义匹配。

public partial class Form1 : Form
{
    public void PaintGui(int percent)
    {
        Label1.Text = percent.ToString() + "% completed";
        Label1.Update();
    }
    private void btnCalc_Click(object sender, EventArgs e)
    {
        //object of some class
        OtherClass other = new OtherClass();
        other.DoWork(PaintGui);
    }
}

// FOR EXAMPLE
public class OtherClass
{
    public void DoWork(Action<int> action)
    {
        for(int i=0;i<=100;i++)
        {
            action(i);
            Thread.Sleep(50);
        }
    }
}