簡體   English   中英

Combobox取消下拉列表

[英]Combobox cancel dropdown

我有一個組合框打開一個帶有datagridview的新表單窗口,我希望用戶通過該datagridview而不是通過組合框選擇項目。 我有這個代碼來實現:

    private void comboBox1_DropDown(object sender, EventArgs e)
    {
        valSel.incBox = (ComboBox)sender;            
        valSel.Show();
        if (this.comboBox1.DroppedDown)
        {
            MessageBox.Show("test");
            SendMessage(this.comboBox1.Handle, CB_SHOWDROPDOWN, 0, 0);
        }
    }

如你所見,我也試圖隱藏組合框的下拉,但它不起作用。 我認為這是因為組合框實際上還沒有“下降”,因此部分代碼永遠不會運行。 當組合框完全“掉落”時,是否有一個事件或其他東西可以單元格,所以我可以發送消息再次關閉它?

您應該能夠簡單地將ComboBox的高度設置為非常小的值。 上次我看了它,這確定了彈出部分的高度(控件的實際高度由UI /字體大小決定)。

然而,更優雅的方式是使用僅模仿下拉框外觀的自定義控件(我相當確定可以通過一些簡單的方式完成)。

在comboBox1.Enter中,如果滿足條件,則將焦點設置為不同的控件。

 private void comboBox1_Enter(object sender, EventArgs e)
    {
        if (comboBox1.Items.Count < 1)
        {
            comboBox1.DroppedDown = false;
            comboBox2.Focus();
            MessageBox.Show("Select a list first");
            comboBox2.DroppedDown = true;
        }
    }

1)從屬性在ComboBox上創建KeyPress事件。 2)編寫代碼

private void cmbClientId_KeyPress(object sender, KeyPressEventArgs e) { ((ComboBox)sender).DroppedDown = false; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM