Как убрать строку richTextBox при Keys.Enter - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть richTextBox.Когда я Keys.Enter в richTextBox2, текст отправить в расширенный текст.Я использую этот код для richtextbox2, но все еще оставляю пустую строку (пробел).

enter image description here

private void richTextBox2_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode == Keys.Enter)
  {
    richTextBox1.Text += "Plan1" + ":   " + richTextBox2.Text + '\n';
    richTextBox2.Text = "";
    richTextBox2.SelectionStart = 0;
  }
}

Как удалить все строки, когда keys.Enter?

1 Ответ

0 голосов
/ 13 декабря 2018

Я использую этот код для richtextbox2, но все еще оставляю пустую строку (пробел)

Если я правильно вас понимаю, вы хотите полностью очистить richTextBox2 когда пользователь нажимает Enter (и вы хотите переместить текст на richTextBox1), но после выполнения вашего кода в richTextBox2 появляется пустая строка, а курсор устанавливается на второй строке.

Если это правильно, то проблема в том, что клавиша Enter все еще обрабатывается, поэтому нам нужно также подключиться к событию KeyPress, чтобы перехватить нажатие клавиши и установить начало выбора.

Чтобы сделать это, нам нужно, чтобы событие KeyDown сообщало событию KeyPress, что оно должно отбрасывать нажатие клавиши.Мы можем сделать это с полем bool, которое мы установили на true в событии KeyDown, а затем проверить его (и установить обратно на false) в событии KeyPress.

Например:

// Flag variable that allows KeyDown to communicate with KeyPress
private bool cancelKeyPress = false;

private void richTextBox2_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        richTextBox1.Text += $"Plan1:   {richTextBox2.Text}\n";
        richTextBox2.Text = "";

        // Set our flag so KeyPress knows we should ignore this key stroke
        cancelKeyPress = true;
    }
}

private void richTextBox2_KeyPress(object sender, KeyPressEventArgs e)
{
    if (cancelKeyPress)
    {
        e.Handled = true;
        richTextBox2.SelectionStart = 0;

        // Set our flag back to false again
        cancelKeyPress = false;
    }
}

Примечание: Согласно недавно добавленному изображению, вы также хотите, чтобы от richTextBox1 до только содержали то, что было в richTextBox2когда была нажата клавиша Enter.

Если это так, то мы можем просто заменить оператор += (который добавляет строку в существующий Text) оператором =(который выполняет прямое назначение):

richTextBox1.Text = $"Plan1:   {richTextBox2.Text}\n";
...