我在网上看,它似乎支持制表符作为字符,但当我按Tab
键时,什么也没有发生。 RichTextBox
是我应用程序中唯一的控件,所以我不想让Tab
改变焦点,而是将制表符插入到编辑器中。如何在Silverlight RichTextControl中将选项卡启用为字符?
是否有我需要设置的属性来启用它?
我在网上看,它似乎支持制表符作为字符,但当我按Tab
键时,什么也没有发生。 RichTextBox
是我应用程序中唯一的控件,所以我不想让Tab
改变焦点,而是将制表符插入到编辑器中。如何在Silverlight RichTextControl中将选项卡启用为字符?
是否有我需要设置的属性来启用它?
从我看到它,那里有目前没有内置此功能,但你可以做它自己:
private void RichTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
RichTextBox richTextBox = (RichTextBox) sender;
richTextBox.Selection.Select(richTextBox.ContentEnd, richTextBox.ContentEnd);
Run tab = new Run() {Text = "\t"};
richTextBox.Selection.Insert(tab);
}
}
不幸的是,这一切混乱是必要的模拟了在WPF提供的AcceptsTab
财产。上述techinque将所选内容设置为RichTextBox
内容的末尾,然后在该位置插入新的Run
(内嵌文本元素)。
我已经在浏览器中测试过它,它也适用于你。让我知道是否还有什么需要澄清的。
谢谢你刚刚测试过,效果很好。显然你知道这个东西:O – 2011-12-30 12:05:55
我不知道此刻任何直接的方法,但你总是可以做
private void RichTextBox_KeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Tab)
rich.AppendText(" ");
}
谢谢,将追加插入文本或只是将其追加到文本框的末尾? – 2011-12-30 09:22:40
根据MSDN,它给文本控件的内容添加一个字符串。 – 2011-12-30 09:27:43
你还必须手动增加光标/插入符的位置我猜 – 2011-12-30 09:29:46
这是我的解决方案。也支持SHIFT + TAB。
private void txtText_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Tab)
{
e.Handled = true;
if ((System.Windows.Input.Keyboard.Modifiers & System.Windows.Input.ModifierKeys.Shift) != 0)
{
var startSel = txtText.Selection.Start;
var endSel = txtText.Selection.End;
var backwardPosition = txtText.Selection.Start.GetNextInsertionPosition(LogicalDirection.Backward);
if (backwardPosition != null)
{
txtText.Selection.Select(backwardPosition, txtText.Selection.Start);
var c = txtText.Selection.Text;
if (c.Equals("\t"))
{
txtText.Selection.Select(backwardPosition, endSel);
txtText.Selection.Text = "";
}
else
{
txtText.Selection.Select(startSel, endSel);
}
}
}
else
{
txtText.Selection.Insert(new Run() { Text = "\t" });
}
}
}
你是说当你按TAB键你想插入#9 – MethodMan 2011-12-30 08:48:13
我不确定你的意思。但我期望通过Tab键获得标准的文本编辑器功能。 – 2011-12-30 08:51:41
怎么样使用文本块 – MethodMan 2011-12-30 09:02:02