WPF文档处理与注释功能详解
1. RichTextBox中的操作与元素放置
在RichTextBox中,我们可以通过以下代码获取鼠标点击位置的单词:
TextPointer location = richTextBox.GetPositionFromPoint(
Mouse.GetPosition(richTextBox), true);
// Get the nearest word using this TextPointer.
TextRange word = WordBreaker.GetWordRange(location);
// Display the word.
txtSelectedWord.Text = word.Text;
需要注意的是,由于RichTextBox会拦截和抑制MouseUp和MouseDown事件,所以这段代码实际上要连接到PreviewMouseDown事件,该事件在MouseDown之前触发。
另外,我们可以使用BlockUIContainer和InlineUIContainer类将非内容元素(派生自UIElement的类)放置在流文档中。但如果使用此技术向RichTextBox添加交互式控件(如文本框、按钮、复选框、超链接等),它们会自动禁用并显示为灰色。若要强制RichTextBox启用嵌入式控件,可将RichTextBox.IsDocumentEnabled属性设置为true(该属性在.NET 3.5中添加)。不过,设置此属性可能会引入一些奇怪的可用性问题,例如控件可以删除和撤销删除,但撤销删除会丢失其事件处理程序;尝试剪切和粘贴包
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



