Pressing Enter Key will Add the Selected Item From ListBox to RichTextBox

纵饮孤独 提交于 2019-12-25 01:02:10

问题


related to this topic: Hidden ListBox will appear while Typing Words in RichTextBox

im working on a code editor and i just want to know if how can I add items from listbox to textbox using enterkey .

further more heres my strings:

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

sample:

in richtextbox (rtb) , i type Ab, then hiddenlistbox will appear with "abstract" text on it (already do that) using this code:

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;
}

then after that after i press enterkey i want to add the abstract from listbox to the richtextbox .

RichTextBox declared as rtb and ListBox declared as lb

what should i do? thanks .


回答1:


Certain controls do not recognize some keys when they are pressed in key down event. For eg ListBox do not recognize if key pressed is Enter Key.

Please see remarks section in following link - http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown(v=vs.110).aspx

one of the solution for your problem can be http://msdn.microsoft.com/en-us/library/system.windows.forms.control.previewkeydown(v=vs.110).aspx

implement PreviewKeyDown Event for your listbox for listbox to recognize your actions.

Here is sample code snippet -

    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;
        }
    }



回答2:


You cannot directly type text to a listbox, so I created a example with textBox:

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

If you meant comboBox you can easily adjust this, replace line above:

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

Copy selected listbox entries to rtf box:

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;
    }
}


来源:https://stackoverflow.com/questions/15194032/pressing-enter-key-will-add-the-selected-item-from-listbox-to-richtextbox

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!