我有一个包含多行文本的富文本框,在“单击”部分文本时,我想推断已单击的文本行,并将其写到另一个更多处理的窗口 - 我遇到的问题是,在某些情况下,以下代码会引发 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];
任何提示或建议将不胜感激。谢谢各位。