C# 从该流读取并将文本发送到另一个表单';什么是文本框?
我在表单中打开了一个readstream。我正在从该流读取数据,并将文本发送到另一个表单的文本框。我希望文本到达readstream后立即更新到文本框中。C# 从该流读取并将文本发送到另一个表单';什么是文本框?,c#,winforms,textbox,updating,C#,Winforms,Textbox,Updating,我在表单中打开了一个readstream。我正在从该流读取数据,并将文本发送到另一个表单的文本框。我希望文本到达readstream后立即更新到文本框中。 第一种形式的代码:-> f2.ShowDialog(); //f2 is second form's object while (true) { string inp_msg = sr.ReadLine(); f2.set_text(inp_msg); this.Refresh();
第一种形式的代码:->
f2.ShowDialog(); //f2 is second form's object
while (true)
{
string inp_msg = sr.ReadLine();
f2.set_text(inp_msg);
this.Refresh();
}
第二种形式中定义的set_文本函数:->
public void set_text(string msg)
{
//MessageBox.Show(msg);
textBox1.Text = textBox1.Text + msg + "\r\n";
//Application.DoEvents();
}
问题是文本框没有更新。请尝试调用以下命令,而不是“f2.ShowDialog()”:
f2.Show();
调用方法“ShowDialog()”时,该语句后面的代码直到表单关闭后才会执行
有关更多详细信息,请参阅。您的
虽然循环将永远运行,但请在循环中的某些条件下添加一些中断
。这是为了不断读取ReadStream。如果是这样,您需要释放UI线程
,您应该创建另一个线程来读取流。while循环本身位于正在读取流的线程中,但您在该线程中显示了form2
。我的意思是form2
应该显示在UI
线程中,而你的while循环应该在另一个线程中。我尝试过这个方法,但程序挂起并显示“无响应”对话框。正如King评论的那样,你正在无限循环中运行。你需要休息一下;语句停止while循环反复循环。