通过辅助课程访问进度条

时间:2014-11-05 09:47:08

标签: c#

我有两个班级Form1.cssecondclass.cs,我正在尝试在secondclass.cs上执行某些操作并将进度发送到Form1.cs上的进度条,这是我目前的代码:

Form1.cs

namespace DifferentClasses
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            secondclass.updateBar(20);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.setBar(20);
        }

        public void setBar(int percentage)
        {
            this.progressBar1.Value += percentage;
            Console.WriteLine(Convert.ToString(percentage));
        }
    }
}

secondclass.cs

namespace DifferentClasses
{
    class secondclass
    {
        public static void updateBar(int percentage)
        {
            var frm = new Form1();
            frm.setBar(percentage);
        }
    }
}

(这是一个新项目,用于测试我在主程序中实际需要的内容) 如你所见,我创建了2个按钮,第一个按钮通过secondclass.cs运行命令 第二个直接从同一个类运行它。有趣的是,两者都不会出错 并且都返回控制台行,但第一个按钮实际上并没有改变进度条,我无法弄清楚原因。

1 个答案:

答案 0 :(得分:2)

问题在于updateBar,你正在创建一个新的Form1并设置它的百分比。 解决此问题的最简单方法是将对当前表单的引用传递给updateBar,如下所示:

public static void updateBar(int percentage,Form1 f)
{
    f.setBar(percentage);
}

并在调用代码中执行此操作:

secondclass.updateBar(20,this);

我猜第二类最终会运行一些可能需要一些时间的东西,所以你可能想看一下C#中的异步功能