C#,非静态字段的对象引用

时间:2018-04-05 07:24:55

标签: c#

我有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);主要形式。

请提供您的意见。

2 个答案:

答案 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);
    }
}