轉(zhuǎn)帖|其它|編輯:郝浩|2012-02-13 02:05:26.000|閱讀 366 次
概述:本章節(jié)將演示文字處理控件TX Text Control如何在文檔中添加超鏈接和錨點(diǎn),以及如何響應(yīng)超鏈接的單擊操作。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
本章節(jié)將演示如何在文檔中添加超鏈接和錨點(diǎn),以及如何響應(yīng)超鏈接的單擊操作。
本章節(jié)相應(yīng)的源代碼可以在TX Text Control.NET的安裝目錄中找到:
Samples\WinForms\VB.NET\ Hyperlinks
Samples\WinForms\CSharp\ Hyperlinks
第一步:插入超鏈接
在這個(gè)示例程序中將在文檔里插入一個(gè)超鏈接,并將該文檔保存為HTML格式,便于在瀏覽器中顯示。
為了在文檔中插入超鏈接,首先需要?jiǎng)?chuàng)建一個(gè)HypertextLink的實(shí)例,創(chuàng)建實(shí)例時(shí)傳入 ”Text Control Web Site” 和 ” ” 作為參數(shù)。 HypertextLink實(shí)例被插入到當(dāng)前光標(biāo)所在的位置,并被添加到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 "//www.gcpowertools.com.cn");
9 // Insert the hyperlink into the document
10 textControl1.HypertextLinks.Add(MyLink);
11 }
需要注意的是上面的例子并沒(méi)有處理Click事件,所以點(diǎn)擊超鏈接時(shí)并沒(méi)有跳轉(zhuǎn)到指定的網(wǎng)頁(yè),而且超鏈接也沒(méi)有藍(lán)色下劃線(xiàn)的字體樣式。事件處理以及顯示樣式將在第二步中完成。
下面調(diào)用TextControl.Save方法來(lái)講文檔保存為HTML格式的文件:
1 [C#]
2 private void cmdSaveAs_Click(object sender, System.EventArgs e)
3 {
4 textControl1.Save(TXTextControl.StreamType.HTMLFormat);
5 }
使用瀏覽器打開(kāi)剛才保存的HTML文件,可以看到剛才添加的超鏈接
第二步:為新建超鏈接添加對(duì)話(huà)框
在第二個(gè)示例程序中,添加了一個(gè)對(duì)話(huà)框,這樣就可以更方便的創(chuàng)建超鏈接。除此之外,還可以對(duì)之前插入的超鏈接進(jìn)行編輯和修改。需要注意的是,超鏈接通常是和 HTML文件相關(guān)聯(lián),不過(guò)超鏈接還可以保存在RTF、微軟Word文件以及TX Text Control格式的文件中。
新添加的對(duì)話(huà)框包含兩個(gè)文本框,第一個(gè)是設(shè)置超鏈接顯示的文本信息,第二個(gè)用于設(shè)置超鏈接對(duì)應(yīng)的鏈接地址。該對(duì)話(huà)框可用于創(chuàng)建超鏈接和編輯超鏈接,如果光標(biāo)所在的位置是一個(gè)超鏈接則進(jìn)行編輯操作,否則用于創(chuàng)建新的超鏈接。
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 }
當(dāng)該對(duì)話(huà)框加載時(shí)會(huì)根據(jù)當(dāng)前輸入位置來(lái)決定鏈接文本和鏈接地址中應(yīng)該顯示的信息:
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 }
用戶(hù)修改鏈接文本和鏈接地址之后點(diǎn)擊【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 }
最后,添加一個(gè)【View】菜單項(xiàng)用于設(shè)置超鏈接文字的格式,包括藍(lán)色字體和下劃線(xiàn)樣式:
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 }
第三步:添加文檔錨點(diǎn)
在第一和第二步中使用的鏈接地址都是外部資源,在該示例中討論如何鏈接到文檔中的某個(gè)位置。這些鏈接叫做文檔鏈接,而這些被指定的位置叫做文檔目標(biāo),文檔目標(biāo)在HTML編輯器中也被當(dāng)做錨點(diǎn)、在字處理器中被當(dāng)做書(shū)簽來(lái)使用。
在運(yùn)行示例程序時(shí),在文檔添加一些文本,然后再通過(guò)Insert / Target來(lái)添加一些文檔目標(biāo)。
通過(guò)Insert / Hypertext Link 菜單為這些文檔目標(biāo)添加鏈接,之前添加的文檔目標(biāo)的名字將被顯示在鏈接位置的下拉框中。
插入目標(biāo)
通過(guò)給DocumentTargets集合添加一個(gè)DocumentTarget對(duì)象的方式來(lái)添加文檔目標(biāo)。與鏈接不同的是,文檔目標(biāo)沒(méi)有可見(jiàn)的文本,所以其構(gòu)造函數(shù)只有一個(gè)參數(shù)。
1 [C#]
2 TXTextControl.DocumentTarget Target =
3 new TXTextControl.DocumentTarget(InsertTarget.TargetName);
4 textControl1.DocumentTargets.Add(Target);
為目標(biāo)添加鏈接
需要對(duì)步驟二中使用的【Hypertext Link】對(duì)話(huà)框進(jìn)行擴(kuò)展,因?yàn)椋溄幽繕?biāo)不僅可以設(shè)置為URL,還可以設(shè)置為文檔目標(biāo)。將之前的【Link To】文本框替換為一個(gè)下拉框,下拉框中顯示的DocumentTargets集合中的目標(biāo)對(duì)象。
1 [C#]
2 foreach (TXTextControl.DocumentTarget Target in tx.DocumentTargets)
3 cboLinkTo.Items.Add("#" + Target.TargetName);
跳轉(zhuǎn)到目標(biāo)
當(dāng)點(diǎn)擊文檔中的鏈接時(shí),文本區(qū)域應(yīng)該滾動(dòng)的鏈接對(duì)應(yīng)的目標(biāo)所在的位置。該功能可以在DocumentLinkClicked事件中調(diào)用ScrollTo方法來(lái)實(shí)現(xiàn):
1 [C#]
2 private void textControl1_DocumentLinkClicked(object sender,
3 TXTextControl.DocumentLinkEventArgs e)
4 {
5 e.DocumentLink.DocumentTarget.ScrollTo();
6 }
顯示和編輯目標(biāo)
TX Text Control可以通過(guò)顯示一個(gè)標(biāo)識(shí)來(lái)指明文檔目標(biāo)所在的位置。但是,如果目標(biāo)不可見(jiàn),怎樣才能在文檔中來(lái)定位這些目標(biāo)呢?解決辦法是使用一個(gè)列表框來(lái)顯示文檔中的全部目標(biāo)對(duì)象,你可以跳轉(zhuǎn)到指定的目標(biāo),或者將其刪除。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:葡萄城控件技術(shù)團(tuán)隊(duì)博客