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

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

本章节将演示如何在文档中添加超链接和锚点,以及如何响应超链接的单击操作。
本章节相应的源代码可以在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试用版下载

相关文章
|
12月前
微信接口报错 "errcode":40163,"errmsg":"code been used, 如何处理?
【10月更文挑战第11天】微信接口报错 "errcode":40163,"errmsg":"code been used, 如何处理?
5692 1
|
Java 编译器 Maven
Idea 启动项目报错 failed to create jvm:jvm path url 或Could not reserve enough space for xxxxKB object heap
Idea 启动项目报错 failed to create jvm:jvm path url 或Could not reserve enough space for xxxxKB object heap
1154 0
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
328 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1331 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。