1. 程式人生 > 其它 >C# —— 點選按鈕動態開啟ComboBox

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();
        }

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