C# RICHTEXTBOX取消回車換行添加行號功能

今日,客戶要求在寫病歷時可以像wps或word那樣自動添加序號,方便醫生使用,但在網上沒有找到相關例子,所以自己用比較笨的方法實現了一下。
主要用到的是richtextbox的keydown事件和TextChange事件

private void richTextBox_examDiagnosis_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                int line = richTextBox_examDiagnosis.Lines.Length;
                line+=1;
                richTextBox_examDiagnosis.AppendText("\n"+line.ToString() + "、");
                string text = richTextBox_examDiagnosis.Text.ToString();
            }
        }
private void richTextBox_examDiagnosis_TextChanged(object sender, EventArgs e)
        {
            string text = richTextBox_examDiagnosis.Text;
            int length = text.Length;
            if (length >= 1)
            {
                string text1 = text.Substring(length - 1,1);
                if(text1=="\n")
                { 
                text1 = text.Substring(0, length - 1);
                richTextBox_examDiagnosis.Text = text1;
                richTextBox_examDiagnosis.Select(text1.Length,0);
                }
            }
        }

思路:首先判斷回車鍵是否按下,當按下時,進行當前行數統計,然後進行加1,同時在追加文本時要加上“\n”,且不能單獨加此“\n”,否則會觸發TextChanged事件。添加完行號後,如果不進行下一步處理,鼠標會自動換到下一行,因此,要在TextChanged事件中,將最後的換行符去掉。這樣就實現了回車鍵按下,自動添加行序號的功能。

但是如果有更好的辦法,還請網友指出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章