我有COM服务器应用程序,它控制另一个应用程序CANoe。我想在COM应用程序的Form2上显示进度条。应在EventHandler中更新进度条的值。 eventHandler调用form2的方法,它将更新进度条的值。 EventHandler是主要形式。
private void mCANoeProgProgressChangedInternal(string sysvarName, object Value) // in main Form
{
if (mCANoeMeasurement != null && mCANoeMeasurement.Running)
{
ProgressBarForm.Prog_progress(Value);
}
}
表格2 -
public void Prog_progress(object value)
{
progressBarProg.Value = (int)value;
}
显示错误
"非静态字段,方法或所需的对象引用 property' Form2.Prog_progress(object)'" at - ProgressBarForm.Prog_progress(Value);主要形式。
请提供您的意见。
答案 0 :(得分:1)
在表单1中,您需要在Form2的实例上执行Prog_progress
方法,而不是在类上(以静态方式)。
在Form1中:
private ProgressBarForm _progressForm = new ProgressBarForm();
(...)
private void mCANoeProgProgressChangedInternal(string sysvarName, object Value) // in main Form
{
if (mCANoeMeasurement != null && mCANoeMeasurement.Running)
{
_progressForm.Prog_progress(Value);
}
}
答案 1 :(得分:0)
可能你缺少实例化Form2,
//这适用于您的父Form1
public partial class Form1 : Form
{
private void mCANoeProgProgressChangedInternal(object sender, EventArgs e)
{
ProgressBarForm frm = new ProgressBarForm();
frm.DoSomething(value);
}
}