我正在使用 WPF 中的文本框/富文本框组件,我需要将其他文本框导入其中。目前,我使用一个 RichTextbox 控件,该控件将其他自定义文本框插入其中(它们是必要的,因为它是一个无法以其他方式完成的表达式)。我遇到的问题是当光标与richtexbox 内的文本框相邻时,我需要将注意力集中在文本框中。它似乎忽略了该组件并跳过它。还有其他人对此有解决方案吗?
我似乎无法控制 WPF 中 RichTexbox 内的光标或组件。
我正在使用 WPF 中的文本框/富文本框组件,我需要将其他文本框导入其中。目前,我使用一个 RichTextbox 控件,该控件将其他自定义文本框插入其中(它们是必要的,因为它是一个无法以其他方式完成的表达式)。我遇到的问题是当光标与richtexbox 内的文本框相邻时,我需要将注意力集中在文本框中。它似乎忽略了该组件并跳过它。还有其他人对此有解决方案吗?
我似乎无法控制 WPF 中 RichTexbox 内的光标或组件。
嵌入在我的 RichTextBox 中的 UIComponent 实际上是一个包含 3 个文本框(基数、上标和下标)的数字。我遇到的问题是光标无法聚焦到数字组件中。
我正在寻找的功能是 this 。. .
RichTextBox.CaretPosition.GetAdjacentElement(LogicalDirection Direction)
这是我的代码。. .
public class MathRichTextbox : RichTextBox
{
public MathRichTextbox()
{
this.PreviewKeyDown += MathRichTextbox_PreviewKeyDown;
}
void MathRichTextbox_PreviewKeyDown(object sender, KeyEventArgs e)
{
Digit expr = null;
switch (e.Key)
{
case Key.Left:
expr = findAdjacentMathDigits(LogicalDirection.Backward);
break;
case Key.Right:
expr = findAdjacentMathDigits(LogicalDirection.Forward);
break;
}
if (expr != null)
this.Dispatcher.BeginInvoke(
new ThreadStart(() => expr.FocusBase()),
System.Windows.Threading.DispatcherPriority.Input, null);
}
private Digit findAdjacentMathDigits(LogicalDirection direction)
{
Digit expr = null;
if (Selection.Text.Length == 0)
{
DependencyObject dpObj = CaretPosition.GetAdjacentElement(
direction);
// is it contained in BlockUIContainer?
expr = CaretPosition.GetAdjacentElement(
direction) as Digit;
// is it onctained in a InlineUIContainer?
if (expr == null)
{
InlineUIContainer uiWrapper =
CaretPosition.GetAdjacentElement(
direction) as InlineUIContainer;
if (uiWrapper != null)
expr = uiWrapper.Child as Digit;
}
}
return expr;
}
}
正如我在评论中所说,您应该尝试使用Run代替。
ARun
与 TextBox 没有太大区别。让我给你举个例子:
Paragraph
您想在 RichTextBox的 a 开头添加此字符串“This is an example” :
Paragraph _para //I assume you have this
TextPointer pointer=_para.ContentStart;
Run run=new Run("This is an example",pointer);
就是这样。您可以设置 FontSize、FontFamily 和 ... 其他属性,例如TextBox
.
run.Foregroung=Brushes.Red;
希望能帮助到你。