3

いくつかの計算を実行した後、SQLにいくつかのレコードを挿入するユーティリティを作成しています。バックグラウンドワーカーを使用して、アプリが応答しない状態になるのを防ぎます。プロセスが機能するので、デリゲートを使用するいくつかのラベル値を変更する必要があります。このコードの一部を再利用できるように、デリゲートを持つ関数にパラメーターとしてラベルを渡すことは可能ですか?

以下は、label2の値を変更するために変更するために使用する関数です。label3には、ほぼ同じ別の関数を使用しました。コントロール名と必要なメッセージを渡すことができるように、パラメーターとしてラベルを受け入れる関数を作成することは可能ですか?それは私のために更新を行いますか?

label2を変更するための私のコードは次のとおりです。

public void changelabel(string msg)
{
    if (label2.InvokeRequired)
        label2.Invoke(new MethodInvoker(delegate
        {
            label2.Text = msg;
        }));
    else
        label2.Text = msg;
}
4

1 に答える 1

6

ラベルはフォームの単なるフィールドです。実際にメソッドを呼び出したり、プロパティを設定したりしない限り、ラベルを好きなように渡すことができます。

public void ChangeLabel(string msg, Label label) {
    if (label.InvokeRequired)
        label.Invoke(new MethodInvoker(delegate {
            label.Text = msg;
        }));
    else
        label.Text = msg;
}
于 2012-06-01T13:52:37.300 に答える