0

以下のコードを使用して、別のスレッドからテキストボックスにテキストを書き込んでいます

delegate void SetTextCallback(string text);
private void SetText1(string text)
    {
        if (this.textBox7.InvokeRequired)
        {
            SetTextCallback d = new SetTextCallback(SetText1);
            this.Invoke(d, new object[] { text});
        }
        else
        {
            this.textBox7.Text = text;
        }
}

ここで、複数のテキスト ボックス (textBox8、9、10 など) にテキストを書き込む必要があります。この同じ関数SetText1を機能させたかったのです。この関数で textBox7 変数を作成し、他のスレッドから書き込もうとしているテキスト ボックスを使用する方法はありますか。

それ以外の場合、現在のアプローチに従う場合、10 個のテキスト ボックスに書き込みたい場合は、10 個の SetText関数が必要になります。

4

2 に答える 2

9

1つの関数だけでそれを行うことができます-デリゲートさえ必要ありません

 private void SetText(TextBox txt, string text)
    {
        if (txt.InvokeRequired)
        {
           Invoke((MethodInvoker)(() => txt.Text = text));
        }
        else
        {
            txt.Text = text;
        }
    }
于 2013-02-07T10:56:23.083 に答える
7
delegate void SetTextCallback(TextBox textBox, string text);
private void SetText(TextBox textBox, string text)
{
    if (textBox.InvokeRequired)
    {
        SetTextCallback d = new SetTextCallback(SetText);
        this.Invoke(d, new object[] {textBox, text});
    }
    else
    {
        textBox.Text = text;
    }
}
于 2013-02-07T10:50:38.783 に答える