【发布时间】:2016-05-03 20:26:57
【问题描述】:
我正在通过事件将行附加到 RickTextbox,我正在使用此代码。
private void Process(object sender, DataReceivedEventArgs e)
{
if (richTextBox1.InvokeRequired)
{
BeginInvoke(new Mesage(Process), sender, e);
}
else
{
richTextBox1.Text += e.Data + Environment.NewLine;
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
Application.DoEvents();
}
}
我正在尝试向 C# WinForms 中的 RichTextbox 添加新行,但它会在该行中引发 StackOverflow 异常。
richTextBox1.Text += e.Data + Environment.NewLine;
e.Data 是一个字符串。我应该怎么做才能继续添加行?
编辑
该进程链接到 fluentmigrator 进程,返回许多行,因为它正在对数据库运行查询。
【问题讨论】:
-
明确地说,它不会返回堆栈溢出异常,它抛出堆栈溢出异常。这是一个重要的区别。
-
Process函数附加到哪个事件上?
-
大多数时候,如果你有某种无限递归循环,就会发生堆栈溢出异常。我得检查一下
BeginInvoke()又做了什么,但BeginInvoke(new Mesage(Process), sender, e);看起来可能是罪魁祸首。 -
将代码放在 try...catch 中,这样您就可以看到发生了什么。
-
我认为 phoog 是正确的。什么样的事件调用函数?我的朋友经常犯错误,为此使用 textBox_TextChanged 事件。
标签: c# .net winforms event-handling richtextbox