0

Form1 があり、他のクラスで処理を行います。Form1 に情報を出力する適切な方法は何でしょうtextBox9か?

これは私のやり方ですが、フォームがアクティブな場合にのみ、部分的にしか機能しません。

これは私のクラスにあるものです:

var form = Form.ActiveForm as Form1;
if (form != null)
{
 form.updateLabel("DBadd[" + counter + "]" + NAME2);
}

これは、Form1 にあるものです。

    delegate void updateStatus(String value);
    public void updateLabel(String value)
    {
        if (textBox9.InvokeRequired)
        {
            updateStatus del = new updateStatus(updateCodemicroLabel);
            textBox9.Invoke(del, new object[] { value });
        }
        else
        {
            {
                textBox9.Text = value;
            }
        }
    }

これは私のクラスがどのように呼ばれたかです:

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        new className().runTask();
    }
4

2 に答える 2

1

使用する代わりに、インスタンスをクラスに渡してForm.ActiveForm、インスタンスとして呼び出すことができるようにする必要があります。whatever.updateLabel()whatever

于 2012-07-20T21:30:32.883 に答える
0

データを返す正しい方法は、ワーカー クラスにメソッドを実装し、フォームのメンバー変数または構成パラメーターで戻り値を取得することです。クラスによって実行されるタスクによっては、タスクをバックグラウンド ワーカー スレッドで実行してから、フォームのメンバー変数を更新する必要がある場合があります。バックグラウンド スレッドでタスクを実行する方法の詳細については、MSDN を参照してください。

参考文献と役立つページ:

于 2012-08-20T17:25:42.857 に答える