C # Как разместить курсор в позиции в richtextbox - PullRequest
0 голосов
/ 30 июня 2018

У меня есть richtextbox в WinForms, я создал функцию копирования и вставки, и я могу копировать и вставлять по своему курсору. ОДНАКО, однажды вставив мой курсор перемещается в начало richtextbox. как заставить его либо остаться на позиции, либо перейти в конец вставленной секции?

Я пытался

Point p = new Point(Cursor.Position.X, Cursor.Position.Y);
rtbNotePad.PointToClient(p); //but does not work.

private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
    rtbNotePad.Copy();
}

private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
    string pasteText = Clipboard.GetText(TextDataFormat.Text).ToString();
    Point p = new Point(Cursor.Position.X, Cursor.Position.Y);

    if (Clipboard.ContainsText())
    {
        rtbNotePad.Text = rtbNotePad.Text.Insert(rtbNotePad.SelectionStart, Clipboard.GetText(TextDataFormat.Text).ToString());
        rtbNotePad.PointToClient(p);
    }
}

1 Ответ

0 голосов
/ 30 июня 2018

Вы должны использовать свойство SelectionStart для управления положением курсора в ReachtextBox.

    private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string pasteText = Clipboard.GetText(TextDataFormat.Text).ToString();

        if (Clipboard.ContainsText())
        {
            var start = rtbNotePad.SelectionStart; // use this if you want to keep cursor where it was
            //start += pasteText.Length;    // use this if want to move cursor to the end of pasted text
            rtbNotePad.Text = rtbNotePad.Text.Insert(rtbNotePad.SelectionStart, Clipboard.GetText(TextDataFormat.Text).ToString());

            rtbNotePad.SelectionStart = start;
           // rtbNotePad.Focus();
        }
    }
...