亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# RichTextBox制作文本編輯器

2019-10-29 21:11:42
字體:
來源:轉載
供稿:網友

本文利用一個簡單的小例子【文本編輯器】,講解RichTextBox的用法。

Windows窗體中的RichTextBox控件用于顯示,輸入和操作格式化的文本,RichTextBox除了擁有TextBox控件的所有功能外,還可以顯示字體,顏色,鏈接,從文件中讀取和加載圖像,以及查找指定的字符。RichTextBox控件通常用于提供類似字體處理程序(如Microsoft Word)的文本操作和顯示功能。RichTextBox控件可以顯示滾動條,且默認根據需要進行顯示。

涉及知識點:

  • SelectionFont 獲取或設置當前選定文本或插入點的字體。
  • FontStyle 指定應用到文本的字形信息。
  • SelectionAlignment  獲取或設置應用到當前選定內容或插入點的對齊方式。
  • SelectionIndent 獲取或設置所選內容開始行的縮進距離(以像素為單位)。
  • SelectionCharOffset 獲取或設置控件中的文本是顯示在基線上、作為上標還是作為基線下方的下標。
  • SelectionColor 獲取或設置當前選定文本或插入點的文本顏色。
  • SelectionBackColor   獲取或設置在 System.Windows.Forms.RichTextBox 控件中選中文本時文本的顏色。
  • SelectionBullet 獲取或設置一個值,通過該值指示項目符號樣式是否應用到當前選定內容或插入點。
  • Clipboard Paste 粘貼指定剪貼板格式的剪貼板內容【插入圖片時使用】。
  • Find 在對搜索應用特定選項的情況下,在 System.Windows.Forms.RichTextBox 控件的文本中搜索位于控件內特定位置的字符串。

效果圖如下【以下設置文本對應的格式】:

C#,RichTextBox,文本編輯器

核心代碼如下

using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Printing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace DemoRichText.Model{ public class DefaultRickFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {  } } /// <summary> /// 加粗格式 /// </summary> public class BoldRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   Font oldFont = rtbInfo.SelectionFont;   Font newFont;   if (oldFont.Bold)   {    newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);//支持位于運算   }   else   {    newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);   }   rtbInfo.SelectionFont = newFont;  } } /// <summary> /// 斜體 /// </summary> public class ItalicRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   Font oldFont = rtbInfo.SelectionFont;   Font newFont;   if (oldFont.Italic)   {    newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);   }   else   {    newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);   }   rtbInfo.SelectionFont = newFont;   rtbInfo.Focus();  } } /// <summary> /// 下劃線 /// </summary> public class UnderLineRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   Font oldFont = rtbInfo.SelectionFont;   Font newFont;   if (oldFont.Underline)   {    newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);   }   else   {    newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);   }   rtbInfo.SelectionFont = newFont;   rtbInfo.Focus();  } } /// <summary> /// 刪除線 /// </summary> public class StrikeLineRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   Font oldFont = rtbInfo.SelectionFont;   Font newFont;   if (oldFont.Underline)   {    newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Strikeout);   }   else   {    newFont = new Font(oldFont, oldFont.Style | FontStyle.Strikeout);   }   rtbInfo.SelectionFont = newFont;   rtbInfo.Focus();  } } /// <summary> /// 左對齊 /// </summary> public class LeftRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   rtbInfo.SelectionAlignment = HorizontalAlignment.Left;   rtbInfo.Focus();  } } /// <summary> /// 居中對齊 /// </summary> public class CenterRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   if (rtbInfo.SelectionAlignment == HorizontalAlignment.Center)   {    rtbInfo.SelectionAlignment = HorizontalAlignment.Left;   }   else   {    rtbInfo.SelectionAlignment = HorizontalAlignment.Center;   }   rtbInfo.Focus();  } } /// <summary> /// 右對齊 /// </summary> public class RightRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   if (rtbInfo.SelectionAlignment == HorizontalAlignment.Right)   {    rtbInfo.SelectionAlignment = HorizontalAlignment.Left;   }   else   {    rtbInfo.SelectionAlignment = HorizontalAlignment.Right;   }   rtbInfo.Focus();  } } /// <summary> /// 縮進對齊 /// </summary> public class IndentRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   //每次以10個像素進行縮進   rtbInfo.SelectionIndent = rtbInfo.SelectionIndent + 10;   rtbInfo.Focus();  } } /// <summary> /// 縮進對齊 /// </summary> public class OutIndentRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   //每次以10個像素進行縮進   rtbInfo.SelectionIndent = rtbInfo.SelectionIndent - 10;   rtbInfo.Focus();  } } /// <summary> /// 下標 /// </summary> public class SubScriptRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   if (rtbInfo.SelectionCharOffset < 0)   {    rtbInfo.SelectionCharOffset = 0;   }   else {    rtbInfo.SelectionCharOffset = -5;   }   rtbInfo.Focus();  } } /// <summary> /// 上標 /// </summary> public class SuperScriptRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   if (rtbInfo.SelectionCharOffset > 0)   {    rtbInfo.SelectionCharOffset = 0;   }   else {    rtbInfo.SelectionCharOffset = 5;   }   rtbInfo.Focus();  } } /// <summary> /// 字體 /// </summary> public class FontRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   FontDialog f = new FontDialog();   if (f.ShowDialog() == DialogResult.OK)   {    FontFamily family = f.Font.FontFamily;    rtbInfo.SelectionFont = new Font(family, rtbInfo.SelectionFont.Size, rtbInfo.SelectionFont.Style);   }   rtbInfo.Focus();  } } /// <summary> /// 文本顏色 /// </summary> public class ForeColorRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   ColorDialog f = new ColorDialog();   if (f.ShowDialog() == DialogResult.OK)   {    rtbInfo.SelectionColor = f.Color;   }   rtbInfo.Focus();  } } /// <summary> /// 文本背景顏色 /// </summary> public class BgColorRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   ColorDialog f = new ColorDialog();   if (f.ShowDialog() == DialogResult.OK)   {    rtbInfo.SelectionBackColor = f.Color;   }   rtbInfo.Focus();  } } /// <summary> /// UL列表,項目符號樣式 /// </summary> public class UlRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   if (rtbInfo.SelectionBullet)   {    rtbInfo.SelectionBullet = false;   }   else {    rtbInfo.SelectionBullet = true;    rtbInfo.BulletIndent = 10;   }   rtbInfo.Focus();  } } /// <summary> /// 圖片插入 /// </summary> public class PicRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   OpenFileDialog o = new OpenFileDialog();   o.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;   o.Title = "請選擇圖片";   o.Filter = "jpeg|*.jpeg|jpg|*.jpg|png|*.png|gif|*.gif";    if (o.ShowDialog() == DialogResult.OK) {    string fileName = o.FileName;    try    {     Image bmp = Image.FromFile(fileName);     Clipboard.SetDataObject(bmp);     DataFormats.Format dataFormat = DataFormats.GetFormat(DataFormats.Bitmap);     if (rtbInfo.CanPaste(dataFormat))     {      rtbInfo.Paste(dataFormat);     }          }    catch (Exception exc)    {     MessageBox.Show("圖片插入失敗。" + exc.Message, "提示",         MessageBoxButtons.OK, MessageBoxIcon.Information);    }   }   rtbInfo.Focus();  } } /// <summary> /// 刪除 /// </summary> public class DelRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   rtbInfo.SelectedText = "";   rtbInfo.Focus();  } } /// <summary> /// 查找 /// </summary> public class SearchRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   string find = rtbInfo.Tag.ToString();   int index= rtbInfo.Find(find, 0,RichTextBoxFinds.None);   int startPos = index;   int nextIndex = 0;   while (nextIndex != startPos)//循環查找字符串,并用藍色加粗12號Times New Roman標記之    {    rtbInfo.SelectionStart = index;    rtbInfo.SelectionLength = find.Length;    rtbInfo.SelectionColor = Color.Blue;    rtbInfo.SelectionFont = new Font("Times New Roman", (float)12, FontStyle.Bold);    rtbInfo.Focus();    nextIndex = rtbInfo.Find(find, index + find.Length, RichTextBoxFinds.None);    if (nextIndex == -1)//若查到文件末尾,則充值nextIndex為初始位置的值,使其達到初始位置,順利結束循環,否則會有異常。     {     nextIndex = startPos;    }    index = nextIndex;   }   rtbInfo.Focus();  } } /// <summary> /// 打印 /// </summary> public class PrintRichFormat : BaseRichFormat {  private RichTextBox richTextbox;  public override void SetFormat(RichTextBox rtbInfo)  {   this.richTextbox = rtbInfo;   PrintDocument pd = new PrintDocument();   pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);   // 打印文檔   pd.Print();  }  private void pd_PrintPage(object sender, PrintPageEventArgs ev)  {   //ev.Graphics.DrawString(richTextbox.Text);   //ev.HasMorePages = true;  } } /// <summary> /// 字體大小 /// </summary> public class FontSizeRichFormat : BaseRichFormat {  public override void SetFormat(RichTextBox rtbInfo)  {   string fontSize = rtbInfo.Tag.ToString();   float fsize = 0.0f;   if (float.TryParse(fontSize, out fsize)) {    rtbInfo.SelectionFont = new Font(rtbInfo.Font.FontFamily, fsize, rtbInfo.SelectionFont.Style);   }   rtbInfo.Focus();  } }} 

頁面代碼【由于實現了代碼封裝,所有頁面代碼較少】

using DemoRichText.Model;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace DemoRichText{ public partial class MainForm : Form {  public MainForm()  {   InitializeComponent();  }    public void btnButtonClick(object sender, EventArgs e) {   Button btn = (Button)sender;   BTNType btnType;   if (Enum.TryParse<BTNType>(btn.Tag.ToString(), out btnType)) {    if (btnType == BTNType.Search) {     if (!string.IsNullOrEmpty(this.txtSearch.Text.Trim()))     {      this.rtbInfo.Tag = this.txtSearch.Text.Trim();     }     else {      return;     }         }    IRichFormat richFomat = RichFormatFactory.CreateRichFormat(btnType);    richFomat.SetFormat(this.rtbInfo);   }  }  private void combFontSize_SelectedIndexChanged(object sender, EventArgs e)  {   float fsize = 12.0f;   if (combFontSize.SelectedIndex > -1) {    if (float.TryParse(combFontSize.SelectedItem.ToString(), out fsize)) {     rtbInfo.Tag = fsize.ToString();     IRichFormat richFomat = RichFormatFactory.CreateRichFormat(BTNType.FontSize);     richFomat.SetFormat(this.rtbInfo);    }    return;   }  } }}

RichTextBox是一個功能豐富的控件,值得學習。

點擊文末原文地址下載源碼。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久一区二区| 欧美精品手机在线| 91久久国产婷婷一区二区| 波霸ol色综合久久| 久久久这里只有精品视频| 亚洲欧洲自拍偷拍| 亚洲一区二区三区在线免费观看| 亚洲欧美另类在线观看| 亚洲精品视频播放| 国产欧美一区二区| 高清一区二区三区四区五区| 日本在线观看天堂男亚洲| 亚洲性生活视频| 欧美老女人性视频| 国产欧美一区二区| 97热在线精品视频在线观看| 北条麻妃在线一区二区| 国内精品一区二区三区四区| 中文字幕日韩av| 亚洲自拍偷拍福利| 国产精品久久久久久av| 久久久噜噜噜久久久| 欧美日韩加勒比精品一区| 国产男人精品视频| 疯狂蹂躏欧美一区二区精品| 欧美电影在线播放| 久久久久久久国产| 国产精品专区h在线观看| 成人情趣片在线观看免费| 国产成人精品a视频一区www| 91超碰caoporn97人人| 欧美激情精品久久久久久久变态| 上原亚衣av一区二区三区| 国产成人涩涩涩视频在线观看| 国产亚洲精品久久久久久牛牛| 高潮白浆女日韩av免费看| 色99之美女主播在线视频| 欧美午夜精品在线| 亚洲丁香婷深爱综合| 亚洲精品美女久久久| 久久久噜噜噜久噜久久| 欧美中文在线免费| 欧美精品少妇videofree| 日本精品中文字幕| 亚洲一区二区自拍| 日韩精品视频免费专区在线播放| 中文字幕亚洲欧美| 久久成人综合视频| 亚洲电影免费观看| 成人国产亚洲精品a区天堂华泰| 国外日韩电影在线观看| 成人免费观看网址| 91精品国产91久久久久久最新| 欧美精品videosex牲欧美| 日韩精品极品毛片系列视频| 成人黄色午夜影院| 亚洲精品98久久久久久中文字幕| 国产精品一香蕉国产线看观看| 亚洲人av在线影院| 国内精品400部情侣激情| 亚洲第一页自拍| 一本一本久久a久久精品牛牛影视| 国产98色在线| 一区国产精品视频| 国产精品久久久av| 国产美女扒开尿口久久久| 日韩一区二区三区国产| 日韩成人高清在线| 亚洲女性裸体视频| www.亚洲人.com| 国产精品极品在线| 亚洲欧美激情四射在线日| 亚洲成人黄色在线观看| 91免费国产网站| 91免费看片在线| 欧美日韩加勒比精品一区| 欧美国产视频日韩| 中文字幕欧美日韩| 精品中文字幕在线| 91午夜理伦私人影院| 日韩欧美中文字幕在线播放| 久久精品电影一区二区| 久久久亚洲影院| 国产一区二区三区欧美| www亚洲欧美| 欧美中文字幕在线播放| 在线电影av不卡网址| 国产精品久久久久999| 九九久久综合网站| 欧美多人爱爱视频网站| 日本国产欧美一区二区三区| 91中文字幕一区| 欧美色播在线播放| 国产精品xxx视频| 欧美成人精品h版在线观看| 亚洲精品网站在线播放gif| 一区二区三区日韩在线| 国产精品男人爽免费视频1| 青青久久av北条麻妃海外网| 欧美亚洲另类在线| 亚洲伊人一本大道中文字幕| 亚洲精品国偷自产在线99热| 久久久精品在线| 亚洲欧洲成视频免费观看| 欧美有码在线观看视频| 成人激情视频在线播放| 日韩美女激情视频| 国产欧美在线播放| 欧洲永久精品大片ww免费漫画| 欧美视频在线免费看| 国产在线精品成人一区二区三区| 欧美极品少妇xxxxx| 亚洲激情视频在线| 欧美丝袜一区二区| 欧美成人精品不卡视频在线观看| 国产综合香蕉五月婷在线| 57pao国产成人免费| 亚洲大胆人体av| 日韩美女av在线| 亚洲精品国产免费| 亚洲成色777777女色窝| 91精品国产高清久久久久久久久| 日韩av在线高清| 国产精品亚洲第一区| 精品国产乱码久久久久久虫虫漫画| 91系列在线观看| 久久综合伊人77777尤物| 欧美性高跟鞋xxxxhd| 这里精品视频免费| 国产精品久久999| 亚洲免费人成在线视频观看| 日韩精品免费看| 国产精品夜间视频香蕉| 久久99青青精品免费观看| 日韩美女av在线| 最近中文字幕mv在线一区二区三区四区| www.国产一区| 欧美一级淫片aaaaaaa视频| 亚洲精品国产福利| 欧美韩日一区二区| 亚洲第一国产精品| 欧美巨大黑人极品精男| 欧美黄色性视频| 亚洲电影免费观看高清完整版在线观看| 亚洲综合在线中文字幕| 亚洲网在线观看| 欧美性69xxxx肥| 久久资源免费视频| 日韩av最新在线观看| 欧美精品久久一区二区| 日韩在线免费高清视频| 久久久久久高潮国产精品视| 精品少妇一区二区30p| 日韩中文字幕视频在线| 亚洲人成电影网站色| 欧美老女人xx| 69久久夜色精品国产7777| 热99精品里视频精品| 黄色成人在线免费| 青青草国产精品一区二区| 另类图片亚洲另类| 精品久久久久久国产| 色老头一区二区三区| 亚洲欧美在线免费|