日期:2014-05-17  浏览次数:21146 次

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;