0

このトピックに関連する: RichTextBox に単語を入力しているときに非表示の ListBox が表示される

コードエディターで作業していますが、 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;
}

その後、エンターキーを押した後、リストボックスからリッチテキストボックスに要約を追加したいと思います。

rtb として宣言された RichTextBox と lb として宣言された ListBox

私は何をすべきか?ありがとう 。

4

2 に答える 2

2

特定のコントロールは、キー ダウン イベントで押されたときに一部のキーを認識しません。たとえば、ListBox は、押されたキーが Enter キーであるかどうかを認識しません。

次のリンクの備考セクションを参照してください - http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown(v=vs.110).aspx

問題の解決策の 1 つは 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 に答える