[英]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.