Нажатие клавиши Enter добавит выбранный элемент из списка в RichTextBox

Связанные с этой темой: Скрытый ListBox появится при наборе слов в RichTextBox

Я работаю над редактором кода, и я просто хочу знать, как я могу добавить элементы из списка в текстовое поле, используя Enterkey .

дальше больше вот мои строки:

public String[] ab = { "abstract" };
public String[] am = { "AmbientProperties", "AmbientValueAttribute" };

образец:

в richtextbox (rtb) я набираю Ab, затем появится hiddenlistbox с "абстрактным" текстом на нем (уже сделайте это), используя этот код:

if (token == "letterA" || token.StartsWith("Ab") || token.StartsWith("ab"))
{
    int length = line.Length - (index - start);
    string commentText = rtb.Text.Substring(index, length);
    rtb.SelectionStart = index;
    rtb.SelectionLength = length;
    lb.Visible = true;

    KeyWord keywordsHint = new KeyWord();

    foreach (string str in keywordsHint.ab)
    {
        lb.Items.Add(str);
    }
    break;
}

затем после этого после нажатия клавиши ввода я хочу добавить реферат из списка в поле richtextbox.

RichTextBox объявлен как rtb, а ListBox объявлен как lb

что я должен делать? Благодарю.

2 ответа

Некоторые элементы управления не распознают некоторые клавиши, когда они нажаты в случае нажатия клавиши. Например, ListBox не распознает, нажата ли клавиша Enter Key.

См. Раздел "Примечания" в следующей ссылке - http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown(v=vs.110).aspx

одним из решений вашей проблемы может быть http://msdn.microsoft.com/en-us/library/system.windows.forms.control.previewkeydown(v=vs.110).aspx

реализовать PreviewKeyDown Event для вашего списка для списка, чтобы распознать ваши действия.

Вот пример кода -

    private void listBox1_KeyDown(object sender, KeyEventArgs e)
    {

        if (e.KeyCode == Keys.Enter)
        {
            //Do your task here :)
        }
    }

    private void listBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        switch (e.KeyCode)
        {
            case Keys.Enter:
                e.IsInputKey = true;
                break;
        }
    }

Вы не можете напрямую вводить текст в список, поэтому я создал пример с textBox:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 13)
    {
        this.richTextBox1.AppendText((sender as TextBox).Text);
        e.Handled = true;
    }
}

Если вы имели в виду comboBox, вы можете легко настроить это, замените строку выше:

private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 13)
    {
        this.richTextBox1.AppendText((sender as ComboBox).Text);
        e.Handled = true;
    }
}

Скопируйте выбранные записи списка в поле RTF:

private void listBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 13)
    {
        foreach (string s in listBox1.SelectedItems)
        {
            this.richTextBox1.AppendText(s + Environment.NewLine);
        }

        e.Handled = true;
    }
}
Другие вопросы по тегам