轉(zhuǎn)帖|其它|編輯:郝浩|2011-12-26 21:04:40.000|閱讀 616 次
概述:標(biāo)記文本域是在文本中插入的一些標(biāo)記,在文字處理器中可以通過標(biāo)記文本來實(shí)現(xiàn)非常廣泛的文字處理功能。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
標(biāo)記文本域是在文本中插入的一些標(biāo)記,在文字處理器中可以通過標(biāo)記文本來實(shí)現(xiàn)非常廣泛的文字處理功能。例如:
標(biāo)記文本域可以由任意字符組合而成,TX 中最多可以包含65535個(gè)標(biāo)記文本域,TX會(huì)維護(hù)這些文本域的位置和編號(hào)信息,同時(shí)還可以進(jìn)行加載、保存和剪貼板操作。
該章節(jié)相應(yīng)的源代碼可以在TX Text Control.NET的安裝目錄中找到:
Samples\WinForms\VB.NET\ Printing
Samples\WinForms\CSharp\ Printing
第一節(jié):創(chuàng)建標(biāo)記文本域
該節(jié)主要演示如何創(chuàng)建標(biāo)記文本域和標(biāo)記文本域的Click事件。示例程序中包含一個(gè)菜單項(xiàng)【Insert Field!】、兩個(gè)Text Control控件,其中一個(gè)是普通文本編輯窗口,另一個(gè)是提示信息窗口。以下代碼演示如何創(chuàng)建一個(gè)標(biāo)記文本域:
private void mnuInsertField_Click(object sender, System.EventArgs e)
{
TXTextControl.TextField newField = new TXTextControl.TextField();
newField.Text = "--------";
newField.ID = fieldID;
fieldID += 1;
textControl1.TextFields.Add(newField);
}
通過以上代碼在當(dāng)前輸入位置插入一個(gè)文本域,并且給文本域的ID屬性設(shè)置一個(gè)位置的值。當(dāng)鼠標(biāo)移動(dòng)至文本域時(shí)Text Control 會(huì)將光標(biāo)變?yōu)槭中凸鈽?biāo),以此提示用戶當(dāng)前位置有一個(gè)文本域,此時(shí)點(diǎn)擊文本域會(huì)觸發(fā)TextFieldClicked事件,而且會(huì)彈出一個(gè)顯示當(dāng)前文本域編號(hào)的提示框。
private void textControl1_TextFieldClicked(object sender, TXTextControl.TextFieldEventArgs e)
{
// Field has been clicked on, update text of second TX and display it
textControl2.Text = "Field clicked, ID: " + e.TextField.ID;
textControl2.BringToFront();
}
private void textControl1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
textControl1.BringToFront();
}
第二節(jié):書簽
該示例演示如何使用標(biāo)記文本域來創(chuàng)建書簽。首先我們將用文本域的編號(hào)來訪問該文本域。示例程序中包含一個(gè)【Bookmar】菜單,包含兩個(gè)子菜單項(xiàng)【Insert】和【Go to...】。點(diǎn)擊【Insert】菜單時(shí)會(huì)在當(dāng)前位置創(chuàng)建一個(gè)文本域;如果選擇文本不為空會(huì)將選中的文本轉(zhuǎn)換為標(biāo)記文本域,代碼如下:
private void mnuBookmark_Insert_Click(object sender, System.EventArgs e)
{
if (textControl1.Text == "")
{
MessageBox.Show("Cannot insert a bookmark if the Text Control is empty.");
}
else if (textControl1.Selection.Length == 0)
{
textControl1.Selection.Length = 1;
}
else
{
TXTextControl.TextField newField = new TXTextControl.TextField();
newField.ID = fieldID;
newField.Text = textControl1.Selection.Text;
textControl1.Selection.Text = "";
fieldID += 1;
textControl1.TextFields.Add(newField);
}
}
在文檔中輸入一些文本并插入一些書簽,然后選擇【Go To...】菜單,此時(shí)會(huì)彈出一個(gè)對(duì)話框,可以在對(duì)話框中輸入書簽的編號(hào),如果該書簽存在點(diǎn)擊【OK】按鈕會(huì)自動(dòng)跳轉(zhuǎn)到書簽所在的位置,實(shí)現(xiàn)代碼如下:
private void cmdOK_Click(object sender, System.EventArgs e)
{
if (Convert.ToInt32(textBox1.Text) > tx.TextFields.Count)
{
MessageBox.Show ("Invalid bookmark number!");
}
else
{
foreach (TXTextControl.TextField field in tx.TextFields)
{
if (field.ID == Convert.ToInt32(textBox1.Text))
{
tx.Selection.Start = field.Start - 1;
tx.Selection.Length = field.Length;
}
}
}
Close();
}
第三節(jié):為書簽指定名稱
在商業(yè)的文本編輯器中,不僅可以通過編號(hào)來訪問書簽,還可以通過書簽名來訪問。用戶在創(chuàng)建書簽時(shí)可以為書簽指定名稱。在【GoTo Bookmark】對(duì)話框中用戶可以選擇書簽名稱,然后跳轉(zhuǎn)到該書簽所在位置。
在創(chuàng)建書簽時(shí),用戶需要為書簽指定一個(gè)名稱。實(shí)現(xiàn)代碼如下:
private void cmdOK_Click(object sender, System.EventArgs e)
{
TXTextControl.TextField field = new TXTextControl.TextField();
field.Name = textBox1.Text;
field.Text = tx.Selection.Text;
tx.Selection.Text = "";
tx.TextFields.Add(Field);
Close();
}
通過以上操作,我們創(chuàng)建了書簽并指定了書簽的名字。下面將在【Goto Bookmark】對(duì)話框中顯示所有書簽的名字,實(shí)現(xiàn)代碼如下:
private void frmGotoDialog_Load(object sender, System.EventArgs e)
{
foreach (TXTextControl.TextField Field in tx.TextFields) {
ComboBox1.Items.Add(Field.Name);
}
}
在用戶選擇書簽之后點(diǎn)擊【OK】按鈕時(shí),將通過遍歷全部書簽的方式找到用戶指定的書簽,實(shí)現(xiàn)代碼如下:
private void cmdOK_Click(object sender, System.EventArgs e)
{
foreach (TXTextControl.TextField field in tx.TextFields)
{
if (field.Name == comboBox1.Text)
{
tx.Selection.Start = field.Start - 1;
tx.Selection.Length = field.Length;
}
}
Close();
}
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:葡萄城控件技術(shù)團(tuán)隊(duì)博客