C# —— 點擊按鈕動態打開ComboBox

 

 

 網上搜索了好多資料,大多是重繪ComboBox或者使用自定義控制項創建一個全新的ComboBox(並非基於window的ComboBox)。

對於菜鳥的我,實現太麻煩,有些程式碼理解起來困難,但是項目比較急,所以就投機取巧,簡單的做了一個比較粗糙的看起來像那麼回事。

 

 

一、窗體布局如下

 

 

 

二、配置ComboBox的屬性:

1.把背景顏色設為和底下控制項同色;

2.把FlatStyle設置為Flat,去掉邊框;

3.把DropDownStyle屬性設置為DropDownLine,禁止輸入,且去掉輸入區域的底色。

這樣ComboBox控制項就完全無邊框和無底色了,實現了「隱身」。

這裡需要注意的是,第三步一定要在第二步之後才能把入區域的底色改為設置的底色。

 

三、配置Panel屬性

1.把Panel拖到ComboBox上方,右邊緣和ComboBox對齊,需要把ComboBOx下拉三角形完全覆蓋掉;

2.把Panel的背景圖片換成自己想要的按鈕;

3.綁定Panel的Click事件如下,當點擊Panel時,使ComboBox下拉框展開

 private void panelUsers_Click(object sender, EventArgs e)
        {
            this.comboBoxUsers.DroppedDown = true; 
        }

現在基本大功告成了。

 

四、但是每次選者下拉框後,顯示區域總是伴隨藍色底色,不好看。原因是焦點在ComboBox上,所以我們把焦點放到其他控制項上就可以了

當選擇完成後,我們動態把焦點給回Panel

在ComboBox的SelectedIndexChanged事件中添加如下程式碼即可

private void comboBoxUsers_SelectedIndexChanged(object sender, EventArgs e)
        {
            panelUsers.Focus();
        }

 

 本文屬原創,歡迎轉載,轉載需要標明出處。