轉帖|其它|編輯:郝浩|2012-02-13 02:05:26.000|閱讀 366 次
概述:本章節將演示文字處理控件TX Text Control如何在文檔中添加超鏈接和錨點,以及如何響應超鏈接的單擊操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
本章節將演示如何在文檔中添加超鏈接和錨點,以及如何響應超鏈接的單擊操作。
本章節相應的源代碼可以在TX Text Control.NET的安裝目錄中找到:
Samples\WinForms\VB.NET\ Hyperlinks
Samples\WinForms\CSharp\ Hyperlinks
第一步:插入超鏈接
在這個示例程序中將在文檔里插入一個超鏈接,并將該文檔保存為HTML格式,便于在瀏覽器中顯示。
為了在文檔中插入超鏈接,首先需要創建一個HypertextLink的實例,創建實例時傳入 ”Text Control Web Site” 和 ” ” 作為參數。 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 "//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可以通過顯示一個標識來指明文檔目標所在的位置。但是,如果目標不可見,怎樣才能在文檔中來定位這些目標呢?解決辦法是使用一個列表框來顯示文檔中的全部目標對象,你可以跳轉到指定的目標,或者將其刪除。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:葡萄城控件技術團隊博客