我有两个班级Form1.cs
和secondclass.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
运行命令
第二个直接从同一个类运行它。有趣的是,两者都不会出错
并且都返回控制台行,但第一个按钮实际上并没有改变进度条,我无法弄清楚原因。
答案 0 :(得分:2)
问题在于updateBar,你正在创建一个新的Form1并设置它的百分比。 解决此问题的最简单方法是将对当前表单的引用传递给updateBar,如下所示:
public static void updateBar(int percentage,Form1 f)
{
f.setBar(percentage);
}
并在调用代码中执行此操作:
secondclass.updateBar(20,this);
我猜第二类最终会运行一些可能需要一些时间的东西,所以你可能想看一下C#中的异步功能