欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
RichTextBox控件 可讀取rtf
分類(lèi): .net 2010-05-26 16:06 2656人閱讀 評論(0) 收藏 舉報

可用RichTextBox控件讀取rtf:

     rtf 模版格式($:Text為內容):

 

public const String DefaultRtfTemplate =

@"{/rtf1/ansi/ansicpg936/deff0/deflang1033/deflangfe2052{/fonttbl{/f0/fnil/fcharset134 /'cb/'ce/'cc/'e5;}}"+

@"/viewkind4/uc1/pard/lang2052/f0/fs18$:Text}";

 

public static String GetDefaultRtf(String content)
{
        return DefaultRtfTemplate.Replace("$:Text",content);

}

 

public static String GetRefContent(content)

{

        System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
        rtBox.Rtf = GetDefaultRtf(content);
        return rtBox.Text;

}

 


RichTextBox控件

與常用的TextBox一樣,RichTextBox控件派生于TextBoxBase。所以,它與TextBox共享許多功能,但許多功能是不同的。TextBox常用于從用戶(hù)處獲取短文本字符串,而RichTextBox用于顯示和輸入格式化的文本(例如,黑體、下劃線(xiàn)和斜體)。它使用標準的格式化文本,稱(chēng)為Rich Text Format (富文本格式)或 RTF。

在上面的示例中,我們使用了標準的TextBox。也可以使用RichTextBox來(lái)完成該任務(wù)。實(shí)際上,如后面的示例所示,可以刪除textBoxOutput 文本框,在它的位置上插入一個(gè)同名的RichTextBox,這個(gè)示例還會(huì )像以前那樣運行。

RichTextBox控件的屬性

如果這種文本框比上一節介紹的文本框更高級,我們就會(huì )期望它有一些新屬性。表15-11中列出了RichTextBox的一些常用屬性。

表  15-11

名    稱(chēng)

描    述

CanRedo

如果上一個(gè)被撤銷(xiāo)的操作可以使用Redo重復,這個(gè)屬性就是true

CanUndo

如果可以在RichTextBox上撤銷(xiāo)上一個(gè)操作,這個(gè)屬性就是true,注意,CanUndo在TextBoxBase中定義,所以也可以用于TextBox控件

RedoActionName

這個(gè)屬性包含通過(guò)Redo方法執行的操作名稱(chēng)

DetectUrls

把這個(gè)屬性設置為true,可以使控件檢測URL,并格式化它們(在瀏覽器中是帶有下劃線(xiàn)的部分)

Rtf

它對應于Text屬性,但包含RTF格式的文本

SelectedRtf

使用這個(gè)屬性可以獲取或設置控件中被選中的RTF格式文本。如果把這些文本復制到另一個(gè)應用程序中,例如Word,該文本會(huì )保留所有的格式化信息

SelectedText

與SelectedRtf一樣,可以使用這個(gè)屬性獲取或設置被選中的文本。但與該屬性的RTF版本不同,所有的格式化信息都會(huì )丟失

SelectionAlignment

它表示選中文本的對齊方式,可以是Center, Left 或 Right

SelectionBullet

使用這個(gè)屬性可以確定選中的文本是否格式化為項目符號的格式,或使用它插入或刪除項目符號

BulletIndent

使用這個(gè)屬性可以指定項目符號的縮進(jìn)像素值

SelectionColor

這個(gè)屬性可以修改選中文本的顏色

SelectionFont

這個(gè)屬性可以修改選中文本的字體

SelectionLength

使用這個(gè)屬性可以設置或獲取選中文本的長(cháng)度

SelectionType

這個(gè)屬性包含了選中文本的信息。它可以確定是選擇了一個(gè)或多個(gè)OLE對象,還是僅選擇了文本

ShowSelectionMargin

如果把這個(gè)屬性設置為true,在RichTextBox 的左邊就會(huì )出現一個(gè)頁(yè)邊距,這將使用戶(hù)更易于選擇文本

UndoActionName

如果用戶(hù)選擇撤銷(xiāo)某個(gè)動(dòng)作,該屬性將獲取該動(dòng)作的名稱(chēng)

SelectionProtected

把這個(gè)屬性設置為true,可以指定不修改文本的某些部分

從上面的列表可以看出,大多數新屬性都與選中的文本有關(guān)。這是因為在用戶(hù)處理其文本時(shí),對它們應用的任何格式化操作都是對用戶(hù)選擇出來(lái)的文本進(jìn)行的。萬(wàn)一沒(méi)有選擇出文本,格式化操作就從光標所在的位置開(kāi)始應用,該位置稱(chēng)為插入點(diǎn)。

RichTextBox控件的事件

RichTextBox使用的大多數事件與TextBox使用的事件相同,表15-12中有幾個(gè)有趣的新事件。

表  15-12

名    稱(chēng)

描    述

LinkedClick

在用戶(hù)單擊文本中的鏈接時(shí),引發(fā)該事件

Protected

在用戶(hù)嘗試修改已經(jīng)標記為受保護的文本時(shí),引發(fā)該事件

(續表)   

名    稱(chēng)

描    述

SelectionChanged

在選中文本發(fā)生變化時(shí),引發(fā)該事件。如果因某些原因不希望用戶(hù)修改選中的文本,就可以在該事件中禁止修改

在下面的示例中,將創(chuàng )建一個(gè)非?;镜奈谋揪庉嬈?。它說(shuō)明了如何修改文本的基本格式,如何加載和保存RichTextBox中的文本。為了簡(jiǎn)單起見(jiàn),這個(gè)示例被加載和保存到固定的文件中。

試試看:RichTextBox示例

與往常一樣,首先設計窗體:

(1) 在C:/BegVCSharp/Chapter15目錄下創(chuàng )建一個(gè)新的C# Windows應用程序,命名為RichTextBoxTest。

(2) 創(chuàng )建窗體,如圖15-14所示。文本框textSize應是一個(gè)TextBox控件。richTextBoxText文本框應是一個(gè)RichTextBox控件。

圖  15-14

(3) 如圖15-14所示命名控件。

(4) 除了文本框以外,把其他控件的Text屬性設置為其控件名稱(chēng)(但表示該控件類(lèi)型的部分不算)。

(5) 把textBoxSize文本框的Text屬性改為10。

(6) 錨定控件,如表15-13所示。

表  15-13

控 件 名 稱(chēng)

Anchor值

buttonLoad 和 buttonSave

Bottom

RichTextBoxText

Top, Left, Bottom, Right

其他控件

Top

(7) 把窗體的MinimumSize屬性值設置為Size屬性的值。

示例的說(shuō)明

前面是該示例的可見(jiàn)部分,下面添加代碼。雙擊Bold按鈕,在代碼中添加Click事件處理程序。下面是該事件的代碼:

private void buttonBold_Click(object sender, EventArgs e)

{

   Font oldFont;

Font newFont;

   // Get the font that is being used in the selected text

   oldFont = this.richTextBoxText.SelectionFont;

   // If the font is using bold style now, we should remove the

   // Formatting

   if (oldFont.Bold)

      newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);

   else

      newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);

   // Insert the new font and return focus to the RichTextBox

   this.richTextBoxText.SelectionFont = newFont;

   this.richTextBoxText.Focus();

}

首先獲取當前選中文本使用的字體,并把它賦給一個(gè)局部變量。然后檢查一下選中文本是否為黑體。如果是,就去除黑體設置;否則就設置黑體。使用oldFont作為原型,創(chuàng )建一個(gè)新字體,但根據需要添加或刪除黑體格式。

最后,把新字體賦給選中的文本,把焦點(diǎn)返回給RichTextBox。Font對象詳見(jiàn)第33章。

buttonItalic 和 buttonUnderline的事件處理程序的代碼與上面的代碼相同,但檢查相關(guān)樣式的代碼不同。雙擊Italic 和 Underline兩個(gè)按鈕,添加下面的代碼:

private void buttonItalic_Click(object sender, EventArgs e)

{

   Font oldFont;

   Font newFont;

   // Get the font that is being used in the selected text

   oldFont = this.richTextBoxText.SelectionFont;

   // If the font is using Italic style now, we should remove it

   if (oldFont.Italic)

      newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);

   else

      newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);

   // Insert the new font

   this.richTextBoxText.SelectionFont = newFont;

   this.richTextBoxText.Focus();

}

private void buttonUnderline_Click(object sender, System.EventArgs e)

{

   Font oldFont;

   Font newFont;

   // Get the font that is being used in the selected text

   oldFont = this.richTextBoxText.SelectionFont;

   // If the font is using Underline style now, we should remove it

   if (oldFont.Underline)

      newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);

   else

      newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);

   // Insert the new font

   this.richTextBoxText.SelectionFont = newFont;

   this.richTextBoxText.Focus();

}

雙擊最后一個(gè)格式化按鈕Center,添加下面的代碼:

private void buttonCenter_Click(object sender, System.EventArgs e)

{

   if (this.richTextBoxText.SelectionAlignment == HorizontalAlignment.Center)

      this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Left;

   else

      this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Center;

   this.richTextBoxText.Focus();

}

這里必須檢查一下另一個(gè)屬性SelectionAlignment,看看選中的文本是否已經(jīng)居中對齊,因為我們希望按鈕像一個(gè)開(kāi)關(guān)那樣運作。如果文本已居中,就使它左對齊,否則就使它居中。HorizontalAlignment是一個(gè)枚舉,其值可以是Left、Right、Center、Justify和 NotSet。在本例中,只檢查一下是否設置了Center,如果已經(jīng)設置了,就把對齊方式設置為L(cháng)eft。如果不是,就設置為Center。

文本編輯器能進(jìn)行的最后一個(gè)格式化操作是設置文本的大小。為文本框Size添加兩個(gè)事件處理程序,一個(gè)處理程序控制輸入,另一個(gè)處理程序檢測用戶(hù)輸入完一個(gè)值的時(shí)間。

在Properties窗口的Events列表中找到并雙擊textBoxSize 控件的KeyPress和Validated事件,給處理程序添加代碼。

與前面示例使用的Validating不同,Validated事件在進(jìn)行完驗證后引發(fā)。這兩個(gè)事件處理程序都使用一個(gè)幫助方法ApplyTextSize,該方法帶有一個(gè)字符串參數,表示文本的大?。?/p>

private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e)

{

   // Remove all characters that are not numbers, backspace and enter.

   if ((e.KeyChar < 48 || e.KeyChar > 57) &&

                                          e.KeyChar != 8 && e.KeyChar != 13)

   {

      e.Handled = true;

   }

   else if (e.KeyChar == 13)

   {

      // Apply size if the user hits enter

      TextBox txt = (TextBox)sender;

      if (txt.Text.Length > 0)

         ApplyTextSize(txt.Text);

      e.Handled = true;

      this.richTextBoxText.Focus();

   }

}

private void textBoxSize_Validated(object sender, CancelEventArgs e)

{

   TextBox txt = (TextBox)sender;

   ApplyTextSize(txt.Text);

   this.richTextBoxText.Focus();

}

private void ApplyTextSize(string textSize)

{

   // Convert the text to a float because we'll be needing a float shortly

   float newSize = Convert.ToSingle(textSize);

   FontFamily currentFontFamily;

   Font newFont;

   // Create a new font of the same family but with the new size

   currentFontFamily = this.richTextBoxText.SelectionFont.FontFamily;

   newFont = new Font(currentFontFamily, newSize);

   // Set the font of the selected text to the new font

   this.richTextBoxText.SelectionFont = newFont;

}

KeyPress事件只允許用戶(hù)輸入一個(gè)整數,并在用戶(hù)按下回車(chē)鍵時(shí),調用ApplyTextSize。我們感興趣的是幫助方法ApplyTextSize。它首先把文本的大小從字符串轉換為浮點(diǎn)數,我們只允許用戶(hù)輸入整數,但在創(chuàng )建新字體時(shí),需要使用浮點(diǎn)數,所以把它轉換為正確的數據類(lèi)型。

之后,獲取字體所屬的字體系列,從該系列中創(chuàng )建一個(gè)帶有新字號的新字體。最后,把選中文本的字體設置為新字體。

這就是我們所能進(jìn)行的所有格式化操作,有一些操作可以由RichTextBox本身處理。如果現在嘗試運行這個(gè)示例,就可以把文本設置為黑體、斜體和下劃線(xiàn),還可以居中文本。這就是我們期望的操作,但還有一些比較有趣的操作。試著(zhù)在文本中鍵入一個(gè)網(wǎng)址,例如http:// www.wrox.com,該文本就被控件識別為一個(gè)Internet地址,加上下劃線(xiàn),當把鼠標指針移到該文本的上面時(shí),鼠標指針就會(huì )變成手的形狀。單擊該文本,就會(huì )打開(kāi)一個(gè)網(wǎng)頁(yè)。我們需要處理用戶(hù)單擊鏈接時(shí)引發(fā)的事件:LinkClicked。

在Properties窗口的Events列表中找到LinkClicked事件,雙擊它,給事件處理程序中添加代碼。我們以前沒(méi)有見(jiàn)過(guò)這個(gè)事件處理程序。它用于提供單擊鏈接的文本,處理程序非常簡(jiǎn)單,如下所示:

private void richTextBoxText_LinkedClick(object sender,  

                                 System.Windows.Forms.LinkClickedEventArgs e)

{

   System.Diagnostics.Process.Start(e.LinkText);

}

這段代碼打開(kāi)了默認的瀏覽器(如果瀏覽器沒(méi)有打開(kāi)),并導航到該鏈接指向的站點(diǎn)。

應用程序的編輯部分就完成了。剩下的是加載和保存控件的內容。這里使用一個(gè)固定的文件。雙擊Load按鈕,添加下面的代碼:

private void buttonLoad_Click(object sender, EventArgs e)

{

   // Load the file into the RichTextBox

   try

   {

      richTextBoxText.LoadFile("Test.rtf");

   }

   catch (System.IO.FileNotFoundException)

   {

      MessageBox.Show("No file to load yet");

   }

}

這就完成了,不需要做其他工作。因為我們處理的是文件,所以總是有可能遇到異常,必須處理這些異常。在Load方法中,處理了因文件不存在而拋出的異常。保存文件也是這樣,雙擊Save按鈕,添加下面的代碼:

private void buttonSave_Click(object sender, EventArgs e)

{

   // Save the text

   try

   {

      richTextBoxText.SaveFile("Test.rtf");

   }

   catch (System.Exception err)

   {

      MessageBox.Show(err.Message);

   }

}

現在運行示例,格式化一些文本,再單擊Save按鈕。清空文本框,單擊Load按鈕,剛才保存的文本就會(huì )再次顯示出來(lái)。

這是一個(gè)RichTextBox示例。運行它時(shí),應得到如圖15-15所示的結果。

圖  15-15

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
2.3 克隆Word——MyEditor程序分析 - 《編程的奧秘》
[C#]設置RichTextBox的字體格式:粗體、斜體、下劃線(xiàn) 【轉】
VB6.0保存富文本格式文件
在RichTextBox控件加入圖片
RichTextBox的最佳實(shí)踐
RichTextBox文字處理控件
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久