richtextbox怎么“回车”
本帖最后由 dannys0302 于 2013-11-25 00:31:54 编辑 问一下,richtextbox中,怎么实现"回车"功能(非敲击回车键)?
就是让光标回到当前行的开始处,让之后添加的字符都从这里开始(覆盖不覆盖都可以)
举个例子:
某一行中,有一个字符串
hello world
"回车"后,输入另一个字符串xxx
然后结果变成:
xxxlo world(覆盖)
或者
xxxhello world(不覆盖)
这个时候,当前光标位置应该在xxx后面
这个问题分解一下,就是要实现3个功能:
1.获取当前行的开始处,然后让光标指向到这里
2.实现添加字符串是从光标后开始而不是从整个文本后面(AppendText方法就是在文本最后面追加字符串)
3.每追加一个字符,光标随之移动(这个不知道是不是自动完成的)
[解决办法]
在Key_Press里面获得光标位置SelectStart
然后将它置于开头。
至于覆盖,可以模拟按Ins键,改为改写状态。
[解决办法]
this.richTextBox1.Focus();
this.richTextBox1.SelectionStart = 0;
//加上这句将输入状态改为Insert状态
System.Windows.Forms.SendKeys.Send("{INSERT}");
private void txtContent_KeyDown(object sender, KeyEventArgs e)
{
RichTextBox txtTmp = sender as RichTextBox;
if (e.KeyCode == Keys.Enter)
{
int i = txtTmp.GetLineFromCharIndex(txtTmp.SelectionStart);
txtTmp.SelectionStart = txtTmp.GetFirstCharIndexFromLine(i) + 1;
}
}
this.richTextBox1.Focus();
//加上这句将输入状态改为Insert状态
System.Windows.Forms.SendKeys.Send("{INSERT}");
this.richTextBox1.Text = "你想添加的字符串" + this.richTextBox1.Text.Substring("你想添加的字符串".Length);
this.richTextBox1.SelectionStart = "你想添加的字符串".Length;