DX(DevExpress)RichEditControl 控件 生成导航栏,点击定位到文本
来源:互联网 发布:重庆网络审批平台 编辑:程序博客网 时间:2024/05/20 18:49
DX(DevExpress)RichEditControl 控件 生成导航栏,点击定位到文本
核心代码:
private void CreateNavigator() { if (m_Doc == null) return; var Paragraphs = m_Doc.Paragraphs; var DicLevelAndLastNode = new Dictionary<int, TreeCustomItem>(); var lstTree = new ObservableCollectionCore<TreeCustomItem>(); var RootNode = new TreeCustomItem { Header = "导航栏", Parent = null, IsExpand = true, Tag = m_Doc.DocumentProperties.Title }; DicLevelAndLastNode.Add(0, RootNode); foreach (var pg in Paragraphs) { var Text = m_Doc.GetText(pg.Range); var Level = pg.OutlineLevel; if (Level < 1) continue; if (!DicLevelAndLastNode.ContainsKey(Level - 1)) { ControlUtility.ShowWarningMsgbox($"本文档大纲级别存在跳级错误,如一级大纲下为三级、四级大纲,无法生成导航栏,建议检查文档"); return; } var ParentNode = DicLevelAndLastNode[Level - 1]; var Node = new TreeCustomItem { Tag = pg, Header = Text, //IsExpand = true, Parent = ParentNode }; ParentNode.Childrens.Add(Node); if (!DicLevelAndLastNode.ContainsKey(Level)) DicLevelAndLastNode.Add(Level, Node); else DicLevelAndLastNode[Level] = Node; } lstTree.Add(RootNode); treeNav.SelectedItemChanged += new SelectedItemChangedEvent(ucTreeView_SelectedItemChanged); treeNav.ContextMenuOpening += new ContextMenuEventHandler(ucTreeView_CreateContextMenu); treeNav.BuildHierarchicalDataTemplate(typeof(TreeCustomItem), "Childrens", "Header", null, "Header"); treeNav.BindingTreeViewData(lstTree); }
其中,最主要的是要自己生成一个Tree的实体类,要求有Parent、Children、Tag属性,然后可以绑定在TreeView中。读取Doc文本的时候,按照段落读取,每一段有一个大纲级别,然后把大纲级别>=1的加进左侧的TreeView中。(0级为正文文本)最后是点击事件,导航:
if (selectedItem == null) return; var Node = selectedItem as TreeCustomItem; if (Node == null) return; var pg = Node.Tag as Paragraph; if (pg == null) return; rbxDoc.Document.CaretPosition = pg.Range.Start; //rbxDoc.ScrollToCaret(); rbxDoc.ScrollToCaret(0);
获得当前节点的Tag,即对于的段落实体。然后设置CaretPosition为段落的起始位置。rbxDoc.ScrollToCaret()这个函数,有时候会定位到最上方,有时候会定位到最下方,十分不方便。他的重载里有一个带参数的形式。
字面意思上理解就是滚动到光标时,显示在第几行。传入参数0,就是在最上方,完美解决了定位有时候在文档上方,有时候在文档下方的问题。
阅读全文
0 0
- DX(DevExpress)RichEditControl 控件 生成导航栏,点击定位到文本
- DevExpress控件-RichEditControl文本高亮显示(图文)
- DX,DevExpress中的RichEditControl如何替换选中的文字
- DevExpress控件使用之RichEditControl的使用
- DevExpress控件使用之RichEditControl的使用
- DevExpress从SpreadsheetControl拷贝粘贴到richeditcontrol
- DevExpress 9.1 MemoEdit (textBox) 定位光标到文本结尾
- DevExpress RichEditControl 书签替换
- DevExpress 控件 dx:ASPxTreeView显示树结构
- DevExpress的控件GridControl光标定位到某一个单元格
- Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏
- intellj idea点击导航栏打开的一个类,怎么才能定位到类的目录
- DX控件中鼠标双击(或鼠标右键同理)点击GridControl(GridView)的实现
- 点击链接自动定位到网页某个具体位置和网站右侧导航介绍
- 侧边导航(高级搜索)应用到 $("xxxxx").click(function () {}点击某控件是触发的方法,
- html中点击导航跳转到本页面另一个地方,文本居中
- DevExpress.LookUpEdit控件实现自动搜索定位功能 兼使用方法(looUpEdit可编辑)
- 导航栏添加控件实现点击和长按事件
- C小知识点 : 无符号数与有符号数运算
- Python SMTP 发送带附件电子邮件
- idea快捷键
- 利用JpGraph,可视化数据库中的数据
- 配置maven环境
- DX(DevExpress)RichEditControl 控件 生成导航栏,点击定位到文本
- Mysql在大型网站的应用架构演变
- java实现解压缩工具方法
- Eclipse 中设置JVM 内存及JVM监控调优
- RDB和AOF持久化对比
- mysql配置版安装使用说明,mysql-5.7.20
- java如何实现让程序暂停1s再继续执行?
- cqyz#p3235 【棋盘问题】解题报告
- TensorFlow实现中文字体分类(五):评估