C# 如何将弹出窗口定位在单词-wpf的开头
使用以下代码,我能够在插入符号位置显示弹出窗口。我如何才能在单词开头打开弹出窗口。我正在使用richtextboxC# 如何将弹出窗口定位在单词-wpf的开头,c#,wpf,C#,Wpf,使用以下代码,我能够在插入符号位置显示弹出窗口。我如何才能在单词开头打开弹出窗口。我正在使用richtextbox Rect positionRect = richtextbox.CaretPosition.GetCharacterRect(LogicalDirection.Backward); Point point = richtextbox.PointToScreen(positionRect.BottomRight); popup.HorizontalOffset = point
Rect positionRect = richtextbox.CaretPosition.GetCharacterRect(LogicalDirection.Backward);
Point point = richtextbox.PointToScreen(positionRect.BottomRight);
popup.HorizontalOffset = point.X;
popup.VerticalOffset = point.Y;
popup.IsOpen = true;
我在下面用
测试了代码,RTB中的文本是“stackoverflow总是好的”。将光标放在某个点并单击按钮,单词开头会出现一个弹出窗口。现在,我使用空格作为单词分隔符,如果您想使用(,)或其他任何东西,可以相应地修改它
private void Button_Click(object sender, RoutedEventArgs e)
{
TextPointer cur = Rtb1.CaretPosition;
char[] textbuffer = new char[1];
do
{
int offset = Rtb1.Document.ContentStart.GetOffsetToPosition(cur);
cur.GetTextInRun(LogicalDirection.Backward, textbuffer, 0, 1);
System.Diagnostics.Debug.WriteLine(textbuffer[0].ToString());
cur = cur.GetNextInsertionPosition(LogicalDirection.Backward);
} while (textbuffer[0] != ' ' && cur != null);
cur = cur.GetNextInsertionPosition(LogicalDirection.Forward);
if (cur == null)
cur = Rtb1.Document.ContentStart;
Rtb1.CaretPosition = cur;
Rtb1.Focus();
Rect rect = cur.GetCharacterRect(LogicalDirection.Backward);
Point point = Rtb1.PointToScreen(rect.BottomRight);
Popup1.HorizontalOffset = point.X;
Popup1.VerticalOffset = point.Y;
Popup1.IsOpen = true;
}
请告诉我这是否解决了您的问题。转到单词的开头。@AnjumSKhan我该怎么做,我不能移动插入符号的位置