0

DeSerializeXML文字列を返す逆シリアル化関数が呼び出されました。タイマーに基づいて実行する必要がある別のクラスから呼び出しているので、タイマーのために呼び出されていElapsedEventます

    private void frm_MyForm_Load(object sender, EventArgs e)
    {
        System.Timers.Timer myTimer = new Timer(2000);
        myTimer.Elapsed += new ElapsedEventHandler(ElapsedEvent);
        myTimer.Enabled = true;            
    }

    public static void ElapsedEvent(object source, ElapsedEventArgs e)
    {
        string x = OtherClass.DeSerializeXML();
    }

MyFormフォームのテキストボックスに割り当てることができるように、ElapsedEventからその文字列値を引き出すにはどうすればよいですか?? これが言葉遣いの悪い質問である場合はお詫び申し上げます。必要に応じてコメントやコードを追加します。皆さんありがとう

4

2 に答える 2

1

返された文字列Textをテキストボックスのプロパティとして設定してみてください。

textBox1.Text = OtherClass.DeSerializeXML();

非 UI スレッドに関して問題が発生した場合は、 を使用してみてくださいInvoke。このような:

var txt = OtherClass.DeSerializeXML();
if (InvokeRequired)
{
    //this is the Form
    this.Invoke(new Action<string>(textBox1), new object[] {txt});
    return;
}
textBox1.Text = txt;
于 2013-04-14T23:31:07.203 に答える
1

Control.Invoke メソッドの使用

public void ElapsedEvent(object source, ElapsedEventArgs e)
{
    string x = OtherClass.DeSerializeXML();
    frm.Invoke((Action)(() => textBox.Text = x);
}

:メソッドのシグネチャからstaticキーワードを削除してください

于 2013-04-14T23:29:03.870 に答える