当前位置: 首页 > news >正文

TX Text Control文字处理教程(8)使用超链接

本章节将演示如何在文档中添加超链接和锚点,以及如何响应超链接的单击操作。
本章节相应的源代码可以在TX Text Control.NET的安装目录中找到:
        Samples\WinForms\VB.NET\ Hyperlinks
        Samples\WinForms\CSharp\ Hyperlinks
第一步:插入超链接
        在这个示例程序中将在文档里插入一个超链接,并将该文档保存为HTML格式,便于在浏览器中显示。

        为了在文档中插入超链接,首先需要创建一个HypertextLink的实例,创建实例时传入 ”Text Control Web Site” 和 ” http://www.gcpowertools.com.cn” 作为参数。 HypertextLink实例被插入到当前光标所在的位置,并被添加到HypertextLinks集合中。

 1 [C#] 
2 private void cmdInsertHyperlink_Click(object sender, System.EventArgs e)
3 {
4 // Create a HypertextLink object
5 TXTextControl.HypertextLink MyLink =
6 new TXTextControl.HypertextLink(
7 "Text Control Web Site",
8 "http://www.gcpowertools.com.cn");
9 // Insert the hyperlink into the document
10 textControl1.HypertextLinks.Add(MyLink);
11 }



需要注意的是上面的例子并没有处理Click事件,所以点击超链接时并没有跳转到指定的网页,而且超链接也没有蓝色下划线的字体样式。事件处理以及显示样式将在第二步中完成。
        下面调用TextControl.Save方法来讲文档保存为HTML格式的文件:

1 [C#] 
2 private void cmdSaveAs_Click(object sender, System.EventArgs e)
3 {
4 textControl1.Save(TXTextControl.StreamType.HTMLFormat);
5 }



使用浏览器打开刚才保存的HTML文件,可以看到刚才添加的超链接

第二步:为新建超链接添加对话框
在第二个示例程序中,添加了一个对话框,这样就可以更方便的创建超链接。除此之外,还可以对之前插入的超链接进行编辑和修改。需要注意的是,超链接通常是和HTML文件相关联,不过超链接还可以保存在RTF、微软Word文件以及TX Text Control格式的文件中。

        新添加的对话框包含两个文本框,第一个是设置超链接显示的文本信息,第二个用于设置超链接对应的链接地址。该对话框可用于创建超链接和编辑超链接,如果光标所在的位置是一个超链接则进行编辑操作,否则用于创建新的超链接。

1 [C#] 
2 private void mnuInsert_Hyperlink_Click(object sender, System.EventArgs e)
3 {
4 frmHyperlinks Hyperlinks = new frmHyperlinks();
5 Hyperlinks.tx = textControl1;
6 Hyperlinks.ShowDialog();
7 HighlightHyperlinks (textControl1, mnuView_Hyperlinks.Checked);
8 }



当该对话框加载时会根据当前输入位置来决定链接文本和链接地址中应该显示的信息:

 1 [C#] 
2 private void frmHyperlinks_Load(object sender, System.EventArgs e)
3 {
4 TXTextControl.HypertextLink HyperLink = tx.HypertextLinks.GetItem();
5 if (HyperLink != null)
6 {
7 // If there is an existing hypertext link at the input position,
8 // copy its text and target to the text boxes on the form.
9 txtLinkedText.Text = HyperLink.Text;
10 txtLinkTo.Text = HyperLink.Target;
11 }
12 else
13 {
14 // If there is no hypertext link at the input position, but
15 // some text has been selected, then copy this text to the
16 // Linked Text text box.
17 if (tx.Selection.Length > 0)
18 txtLinkedText.Text = tx.Selection.Text;
19 }
20 }



用户修改链接文本和链接地址之后点击【OK】按钮,输入的信息将被更新到文档中:

 1 [C#] 
2 private void cmdOK_Click(object sender, System.EventArgs e)
3 {
4 TXTextControl.HypertextLink HyperLink = tx.HypertextLinks.GetItem();
5 if (HyperLink == null)
6 {
7 // Insert a new link
8 TXTextControl.HypertextLink NewLink =
9 new TXTextControl.HypertextLink(
10 txtLinkedText.Text , txtLinkTo.Text);
11 tx.HypertextLinks.Add(NewLink);
12 }
13 else
14 {
15 // Update an existing link
16 HyperLink.Text = txtLinkedText.Text;
17 HyperLink.Target = txtLinkTo.Text;
18 }
19 Close();
20 }



最后,添加一个【View】菜单项用于设置超链接文字的格式,包括蓝色字体和下划线样式:

 1 [C#] 
2 void HighlightHyperlinks(TXTextControl.TextControl tx, bool bHighlight)
3 {
4 int PreviousStart = tx.Selection.Start,
5 PreviousLength = tx.Selection.Length;
6
7 foreach (TXTextControl.HypertextLink Link in tx.HypertextLinks)
8 {
9 tx.Selection.Start = Link.Start-1;
10 tx.Selection.Length = Link.Length;
11 if (bHighlight)
12 {
13 tx.Selection.ForeColor = Color.Blue;
14 tx.Selection.Underline = TXTextControl.FontUnderlineStyle.Single;
15 }
16 else
17 {
18 tx.Selection.ForeColor = Color.Black;
19 tx.Selection.Underline = TXTextControl.FontUnderlineStyle.None;
20 }
21 }
22 tx.Selection.Start = PreviousStart;
23 tx.Selection.Length = PreviousLength;
24 }



 

第三步:添加文档锚点
        在第一和第二步中使用的链接地址都是外部资源,在该示例中讨论如何链接到文档中的某个位置。这些链接叫做文档链接,而这些被指定的位置叫做文档目标,文档目标在HTML编辑器中也被当做锚点、在字处理器中被当做书签来使用。
        在运行示例程序时,在文档添加一些文本,然后再通过Insert / Target来添加一些文档目标。

        通过Insert / Hypertext Link 菜单为这些文档目标添加链接,之前添加的文档目标的名字将被显示在链接位置的下拉框中。

插入目标
通过给DocumentTargets集合添加一个DocumentTarget对象的方式来添加文档目标。与链接不同的是,文档目标没有可见的文本,所以其构造函数只有一个参数。

1 [C#] 
2 TXTextControl.DocumentTarget Target =
3 new TXTextControl.DocumentTarget(InsertTarget.TargetName);
4 textControl1.DocumentTargets.Add(Target);



为目标添加链接
需要对步骤二中使用的【Hypertext Link】对话框进行扩展,因为,链接目标不仅可以设置为URL,还可以设置为文档目标。将之前的【Link To】文本框替换为一个下拉框,下拉框中显示的DocumentTargets集合中的目标对象。

1 [C#] 
2 foreach (TXTextControl.DocumentTarget Target in tx.DocumentTargets)
3 cboLinkTo.Items.Add("#" + Target.TargetName);



跳转到目标
当点击文档中的链接时,文本区域应该滚动的链接对应的目标所在的位置。该功能可以在DocumentLinkClicked事件中调用ScrollTo方法来实现:

1 [C#] 
2 private void textControl1_DocumentLinkClicked(object sender,
3 TXTextControl.DocumentLinkEventArgs e)
4 {
5 e.DocumentLink.DocumentTarget.ScrollTo();
6 }



显示和编辑目标
TX Text Control可以通过显示一个标识来指明文档目标所在的位置。但是,如果目标不可见,怎样才能在文档中来定位这些目标呢?解决办法是使用一个列表框来显示文档中的全部目标对象,你可以跳转到指定的目标,或者将其删除。

 

 

TX Text Control试用版下载

相关文章:

  • mongodb
  • Navicat for MySQL之HTTP和SSH远程连接数据库
  • 20个数据库设计最佳实践
  • 修复 DSL 自动开关机的问题 ( NDSL / iDSL 自动开机 自动关机 修理)
  • 黄聪:自定义插件的时候,如何调用WordPress编辑器(wp_editor)转
  • 原来oracle也有像ibm developernetworks这样的社区,厉害,果然是生态链上游的厂商...
  • 为什么用ls和du显示出来的文件大小有差别?
  • Linux笔记(三)— Linux 常用命令
  • 吞吐量与IOPS
  • “团购老大”的秘密
  • 如何实现XenApp用户“桌面、文档”变成本地文档与桌面
  • 企业中的路由和交换简介读书摘要2 探索企业网络基础架构
  • 6200 sdboot 测试版分析(一)
  • 纠结,何去何从?
  • WayOs扩展WAN口工具1.4隆重发布,同时发布BCM内置三天智能重启超级终端调试图...
  • [Vue CLI 3] 配置解析之 css.extract
  • 【前端学习】-粗谈选择器
  • 11111111
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • dva中组件的懒加载
  • Java的Interrupt与线程中断
  • JSONP原理
  • python_bomb----数据类型总结
  • Python中eval与exec的使用及区别
  • Redash本地开发环境搭建
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 从零开始学习部署
  • 转载:[译] 内容加速黑科技趣谈
  • python最赚钱的4个方向,你最心动的是哪个?
  • raise 与 raise ... from 的区别
  • ​你们这样子,耽误我的工作进度怎么办?
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (9)STL算法之逆转旋转
  • (java)关于Thread的挂起和恢复
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (四)Controller接口控制器详解(三)
  • (四)linux文件内容查看
  • (转)原始图像数据和PDF中的图像数据
  • ..回顾17,展望18
  • .net MySql
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • /proc/vmstat 详解
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • []C/C++读取串口接收到的数据程序
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [20181219]script使用小技巧.txt
  • [BZOJ4010]菜肴制作
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [CentOs7]图形界面
  • [Godot] 3D拾取
  • [IDF]聪明的小羊
  • [Java] 图说 注解