RichTextBox模仿ListBox之應用

使用RichTextBox顯示你需要顯示的訊息與資料。

常常在寫程式的時候需要將系統訊息或是各種資訊以條列的方式顯示出來,第一個想到的就是使用ListBox,但是使用下去馬上會發生一個問題,就是新的資料網下增加,但是ScrollBar卻永遠在上面不動如山,實在不是一個很人性化的設計,若是要不同的資訊使用不同的顏色,那就更是困難重重了。

今天介紹一下平常相對少用的RichTextBox,使用RichTextBox不僅可以達到我們所要的功能,還可以儲存/開啟檔案,對於訊息紀錄的管理也更加方便,最重要的是程式的寫法非常容易。

 

1.先定義相關的資訊分類與相對的顏色


private Color[] MsgTypeColor = { Color.Blue, Color.Green, Color.Black, Color.Orange, Color.Red };
public enum MsgType { System, User, Normal, Warning, Error };

 

2.再來編寫插入訊息文字的函式


private void AddText(MsgType msgtype, string msg)
{
    richTextBox1.Invoke(new EventHandler(delegate
    {
        richTextBox1.SelectedText = string.Empty;
        richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold);
        richTextBox1.SelectionColor = MsgTypeColor[(int)msgtype];
        richTextBox1.AppendText(msg);
        richTextBox1.ScrollToCaret();
    }));
}

 

3.在需要的地方寫下呼叫函式


AddText(MsgType.Normal, textBox1.Text + "\n");

 

4.接下來是存檔與開檔

存檔


SaveFileDialog SFD = new SaveFileDialog();
richTextBox1.SaveFile(SFD.FileName.ToString(), RichTextBoxStreamType.PlainText);

開檔


OpenFileDialog OFD = new OpenFileDialog();
richTextBox1.LoadFile(OFD.FileName, RichTextBoxStreamType.PlainText);

PlainText是指純文字的檔案格式,是以副檔名為TXT儲存,所以且記:開檔與存檔必須要一至,否則會Error的唷。

 

另外補充,當同時擁有TextBox與RichTextBox同時存在,又想要把游標初始化在TextBox,請在Form的Shown事件底下加入


private void Form1_Shown(object sender, EventArgs e)
{
    textBox1.Focus();
}

這樣才會在視窗顯示出來的時候,第一時間把游標Focus在TextBox,不然RichTextBox會綁架游標喔。

 

PeterDotNetCS10082701.zip