我正在尝试开发一个功能,用户可以从 hastags 和 FriendList 列表中进行选择,并在他使用自动建议键入时将它们添加到 RichEditBox,有点像自动完成。这是执行此操作的代码。
private void MentionSuggestionList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0)
{
bool flag = false;
int index = 0;
for (int i = PostRichEditBox.Document.Selection.EndPosition - 1; i >= 0; i--)
{
if (Char.IsLetterOrDigit(_postText[i]) || _postText[i] == '_')
{
continue;
}
else if (_postText[i] == '@' || _postText[i] == '#')
{
flag = true;
index = i + 1;
break;
}
else
{
break;
}
}
if (flag)
{
PostRichEditBox.Document.Selection.StartPosition = index;
//AccessViolationException here
PostRichEditBox.Document.Selection.SetText(TextSetOptions.None, (e.AddedItems[0] as MentionUserModel).screenName + " ");
PostRichEditBox.Document.Selection.StartPosition = PostRichEditBox.Document.Selection.EndPosition;
}
}
}
但是当我更改richeditbox 的选择文本时,我会随机获取 AccessViolation。它是随机的,但它足够频繁,以至于我每次都可以在几次尝试中复制它。我什至可以捕捉到这个异常。我应该怎么办?
与我在 msdn 上的问题类似,据此,这是一个已知问题。但是 Rudy huyn 的 6tag 完美地做到了这一点。如何?
我试图用 TextBox 改变 RichEditBox 并且它仍然发生在那个控件上。