Нажатие клавиши 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;
}
}