我有一个包含多行文本的丰富文本框,在对部分文本进行“单击”时,我想推断出已单击的文本行,并将其写入另一个窗口进行更多处理--我遇到的问题是,在某些情况下,下面的代码正在抛出一个IndexOutOfRangeException,从我微薄的观点来看,这是不可能的.我假设GetLineFromCharIndex()和RichTextBox.Lines之间存在可选性;特别是在使用其他“包容性”变量(如“SelectionStart”)时。
在至少一种情况下,单击我的“最后一行”文本时,它后面有一个空行(使它实际上不是最后一行.)抛出一个异常。
void OutputField_SelectionChanged(object sender, EventArgs e)
{
try
{
if (!this.LineEditor.Visible)
this.LineEditor.Show();
if (this.OutputField.SelectionStart == this.OutputField.TextLength)
return;
int TargetLine = this.OutputField.GetLineFromCharIndex(this.OutputField.SelectionStart);
String LineText = this.OutputField.Lines[TargetLine];
this.LineEditor.SetContent(TimeSpan.Zero, TimeSpan.Zero, LineText);
return;
}
catch (Exception ex)
{
}
}具体而言,我发现的例外是以下几行;
String LineText = this.OutputField.Lines[TargetLine];任何提示或建议将不胜感激。谢谢各位。
发布于 2013-08-26 22:21:18
看起来GetLineFromCharIndex()返回屏幕上显示的实际行,不一定是Lines[]中的索引(如果WordWrap是打开的)。尝试一下WordWrap,看看它是否像预期的那样工作。
参考文献
https://stackoverflow.com/questions/18453852
复制相似问题