轉帖|其它|編輯:郝浩|2012-02-05 20:34:17.000|閱讀 477 次
概述:標記文本域是在文本中插入的一些標記,在文字處理器中可以通過標記文本來實現非常廣泛的文字處理功能。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
標記文本域是在文本中插入的一些標記,在文字處理器中可以通過標記文本來實現非常廣泛的文字處理功能。例如:
標記文本域可以由任意字符組合而成,TX 中最多可以包含65535個標記文本域,TX會維護這些文本域的位置和編號信息,同時還可以進行加載、保存和剪貼板操作。
該章節相應的源代碼可以在TX Text Control.NET的安裝目錄中找到:
第一節:創建標記文本域
該節主要演示如何創建標記文本域和標記文本域的Click事件。示例程序中包含一個菜單項【Insert Field!】、兩個Text Control控件,其中一個是普通文本編輯窗口,另一個是提示信息窗口。以下代碼演示如何創建一個標記文本域:
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);
}
通過以上代碼在當前輸入位置插入一個文本域,并且給文本域的ID屬性設置一個位置的值。當鼠標移動至文本域時Text Control 會將光標變為手型光標,以此提示用戶當前位置有一個文本域,此時點擊文本域會觸發TextFieldClicked事件,而且會彈出一個顯示當前文本域編號的提示框。
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();
}
第二節:書簽
該示例演示如何使用標記文本域來創建書簽。首先我們將用文本域的編號來訪問該文本域。示例程序中包含一個【Bookmar】菜單,包含兩個子菜單項【Insert】和【Go to...】。點擊【Insert】菜單時會在當前位置創建一個文本域;如果選擇文本不為空會將選中的文本轉換為標記文本域,代碼如下:
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...】菜單,此時會彈出一個對話框,可以在對話框中輸入書簽的編號,如果該書簽存在點擊【OK】按鈕會自動跳轉到書簽所在的位置,實現代碼如下:
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();
}
第三節:為書簽指定名稱
在商業的文本編輯器中,不僅可以通過編號來訪問書簽,還可以通過書簽名來訪問。用戶在創建書簽時可以為書簽指定名稱。在【GoTo Bookmark】對話框中用戶可以選擇書簽名稱,然后跳轉到該書簽所在位置。
在創建書簽時,用戶需要為書簽指定一個名稱。實現代碼如下:
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();
}
通過以上操作,我們創建了書簽并指定了書簽的名字。下面將在【Goto Bookmark】對話框中顯示所有書簽的名字,實現代碼如下:
private void frmGotoDialog_Load(object sender, System.EventArgs e)
{
foreach (TXTextControl.TextField Field in tx.TextFields) {
ComboBox1.Items.Add(Field.Name);
}
}
在用戶選擇書簽之后點擊【OK】按鈕時,將通過遍歷全部書簽的方式找到用戶指定的書簽,實現代碼如下:
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();
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園