私は、ユーザーが 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 hereに関する私の質問に似たもので、既知の問題です。しかし、Rudy huyn の 6tag はこれを完璧に行います。どうやって?
RichEditBox を TextBox に変更しようとしましたが、そのコントロールでも引き続き発生します。