0

与此主题相关: 在 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

我应该怎么办?谢谢 。

4

2 回答 2

2

某些控件在按键按下事件中被按下时无法识别某些按键。例如,ListBox 无法识别按下的键是否为 Enter 键。

请参阅以下链接中的备注部分 - 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 事件,以便列表框识别您的操作。

这是示例代码片段 -

    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;
        }
    }
于 2014-03-20T13:41:19.720 回答
0

您不能直接在列表框中输入文本,因此我使用 textBox 创建了一个示例:

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

如果您的意思是组合框,您可以轻松调整它,替换上面的行:

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;
    }
}
于 2013-03-04T03:27:33.363 回答