0

このコードを wpf に移植するにはどうすればよいですか?

public void ChangeTextBox(string txt)
    {
        if (textBox1.InvokeRequired)
        {
            Invoke(new UpdateText(ChangeTextBox), new object[] { txt });
        }
        else
        {
            textBox1.Text += txt + "\r\n";
        }
    }
4

2 に答える 2

0

Dispatcherコントロールのクラスまたはアプリケーションレベルを単純に使用できますDispatcherが、あなたの場合はコントロールのディスパッチャが必要です。また、呼び出すメソッドを再帰的に呼び出す必要がないことに注意してください。textBox.Text必要な値に設定するだけです。

何が起こるかというと、それはContext switch舞台裏で行われ、独自のディスパッチャーにディスパッチされているため、コントロールを変更できるようになります。

if(!textBox1.Dispatcher.CheckAccess())
{
 textbox1.Dispatcher.Invoke(new Action(() => textBox.Text += txt + "\r\n";);
}
else
{
 textBox.Text += txt + "\r\n";
}
于 2014-07-06T14:58:36.490 に答える
0

次のようなことができるはずです。

public void ChangeTextBox(string txt)
    {
        if (!textBox1.Dispatcher.CheckAccess())
        {
            textBox1.Dispatcher.Invoke(new UpdateText(ChangeTextBox), new object[] { txt });
        }
        else
        {
            textBox1.Text += txt + "\r\n";
        }
    }

この回答は、 SO の質問MSDN Documentation for Dispatcherに基づいています。

于 2014-07-06T14:59:38.617 に答える