1

AutoCompleteMode = SuggestAppend および AutoCompleteSource = ListItems の ComboBox (ドロップダウン スタイル) があります。

ドロップダウン リストを開いてからコンボ ボックスのテキスト フィールド部分に書き込みを開始すると、提案ボックスがすべてのドロップダウン値のリストをカバーしますが、ドロップダウン値リストにはまだフォーカスがあり、提案ボックス内の項目を選択できません。 .

これは非常に厄介な動作であり、デフォルトの動作でないことを願っています。他の誰かが同じ問題を抱えていて、それを防ぐ方法を見つけましたか?

4

1 に答える 1

1

AutoCompleteMode プロパティを使用しています。あなたの問題は、提案ボックスがリストのドロップダウンリストを覆っていることです。オートコンプリートの別の方法を次に示します。

//ComboBox TextChanged Event
    private void txtName1_TextChanged(object sender, EventArgs e)
    {
        SqlDataAdapter daTemp = new SqlDataAdapter("select Name from Names where Name like '" + txtName1.Text + "%'", strConnection);
        DataTable dtTemp = new DataTable();
        daTemp.Fill(dtTemp);
        MessageBox.Show(dtTemp.Rows.Count.ToString());
        String[] Names = new String[dtTemp.Rows.Count + 1];
        if (dtTemp.Rows.Count > 0)
        {
            for (int x = 0; x <= dtTemp.Rows.Count - 1; x++)
            {
                Names[x] = dtTemp.Rows[x][0].ToString();
            }
        }
        else
        {
            MessageBox.Show("Data not found");
        }
        contextMenuStrip1.Items.Clear();
        for (int y = 0; y <= dtTemp.Rows.Count - 1; y++)
        {
            //Set The Desired Location (e.g. Besides of ComboBox) Of ContextMenuStrip
            contextMenuStrip1.Left = 80;
            contextMenuStrip1.Top = 90;
            contextMenuStrip1.Items.Add(Names[y].ToString());
            contextMenuStrip1.Visible = true;
        }
    }

同じことが DropDownLost にも適用できます。ここで、ContextMenuStrip から適切な値を選択し、それを Your ComboBox (または DropDownList) に渡します。これを行うには、次のコードを ContextMenuStrip の ItemClicked イベントに追加します。

private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
        txtName1.Text = e.ClickedItem.ToString();
    }
于 2012-12-01T06:05:08.153 に答える