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(); }
本文屬原創,歡迎轉載,轉載需要標明出處。