今日,客戶要求在寫病歷時可以像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事件中,將最後的換行符去掉。這樣就實現了回車鍵按下,自動添加行序號的功能。
但是如果有更好的辦法,還請網友指出。