我有一个名为DeSerializeXML
的反序列化函数,它返回一个字符串。我从一个不同的类中调用它,我需要它基于一个Timer运行,所以我在ElapsedEvent
中为Timer调用它
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();
}
如何从ElapsedEvent中提取该字符串值,以便将其分配给MyForm表单上的文本框?如果这是一个措辞不好的问题,我会道歉,我会根据需要添加评论/更多代码。谢谢大家
答案 0 :(得分:1)
public void ElapsedEvent(object source, ElapsedEventArgs e)
{
string x = OtherClass.DeSerializeXML();
frm.Invoke((Action)(() => textBox.Text = x);
}
注意:从方法的签名中删除 static 关键字
答案 1 :(得分:1)
尝试将返回的字符串设置为text-box的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;