我正在使用WPF中的textbox/richtextbox組件,我需要將其他文本框導入到它。目前,我使用一個RichTextbox控件來插入額外的自定義文本框(它們是必需的,因爲它是一個無法完成的表達式)。我遇到的問題是,當光標與richtexbox內部的文本框相鄰時,我需要將注意力集中在文本框中。它似乎忽略了組件並跳過它。其他人是否有解決方案?DotNet中Textbox/RichTextbox中的組件
我似乎無法控制WPF中RichTexbox的遊標或組件。
我正在使用WPF中的textbox/richtextbox組件,我需要將其他文本框導入到它。目前,我使用一個RichTextbox控件來插入額外的自定義文本框(它們是必需的,因爲它是一個無法完成的表達式)。我遇到的問題是,當光標與richtexbox內部的文本框相鄰時,我需要將注意力集中在文本框中。它似乎忽略了組件並跳過它。其他人是否有解決方案?DotNet中Textbox/RichTextbox中的組件
我似乎無法控制WPF中RichTexbox的遊標或組件。
我的RichTextBox中嵌入的UIComponent實際上是一個包含3個TextBoxes(base,superscript和subscript)的數字。我遇到的問題是光標無法集中到數字組件。
我一直在尋找的功能是這樣的。 。 。
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來代替。
A Run
與TextBox沒有多大區別。我給大家舉一個例子:
您要添加此字符串「這是一個例子」在一個RichTextBox一個Paragraph
的開頭:
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;
希望它有幫助。
哇。這個地方比較溢出死了。 。 。或者因爲它是聖誕節前夕? – rbtLong
您應該嘗試使用[運行](http://msdn.microsoft.com/en-us/library/system.windows.documents.run%28v=vs.95%29.aspx)。看到這個[鏈接](http://stackoverflow.com/questions/13485533/wpf-richtextbox-seamless-textboxes-as-inlineuicontainers)和最終的解決方案 – Ramin