Получить текущее значение позиции курсора в RichTextBox в WPF - PullRequest
3 голосов
/ 27 июля 2011

Как получить текущее значение позиции курсора в RichTextBox в WPF?

В WPF много изменений в RichTextBox.

Ответы [ 3 ]

1 голос
/ 27 июля 2011

привет, надеюсь, этот код поможет вам

Код:

private static int EM_LINEINDEX = 0xbb;
[DllImport("user32.dll")]
extern static int SendMessage(IntPtr hwnd, int message, int wparam, int lparam);
private void UpdateCaretPos()
{
  int line, col, index;
  index = rtfText.SelectionStart;
  line = rtfText.GetLineFromCharIndex(index);
  col = index - SendMessage(rtfText.Handle, EM_LINEINDEX, -1, 0);
  panCaret.Text = (++line).ToString() + ", " + (++col).ToString();
}
private void rtfText_TextChanged(object sender, EventArgs e)
{
  UpdateCaretPos();
}
private void rtfText_KeyDown(object sender, EventArgs e)
{
  UpdateCaretPos();
}

private void rtfText_KeyUp(object sender, EventArgs e)
{
  UpdateCaretPos();
}

Привет

Каран Шах

1 голос
/ 27 июля 2011

Взгляните на свойство CaretPosition.

Получает (или устанавливает) позицию входной каретки.

Кроме того, есть свойство Selection. Возвращает объект, который содержит информацию о выделенном тексте, включая Start и End

0 голосов
/ 27 июля 2011
   private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Back)
    {
        var z = this.richTextBox1.SelectionStart;
        var r = richTextBox1.Find(" ", 0, z, RichTextBoxFinds.None | RichTextBoxFinds.Reverse);
        var q = this.richTextBox1.Text.Substring(r + 1, z - r - 1);
        switch (q)
        {
            case "test":
                this.richTextBox1.SelectionStart = r + 1;
                this.richTextBox1.SelectionLength = z - r - 1;
                this.richTextBox1.SelectionColor = Color.Black;
                this.richTextBox1.SelectionStart += this.richTextBox1.SelectionLength;
                this.richTextBox1.SelectionLength = 0;
                //e.Handled = true;
                break;
            default:
                this.richTextBox1.SelectionStart = z;
                break;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...