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

但是每次選者下拉框后,顯示區域總是伴隨藍色底色,不好看。原因是焦點在ComboBox上,所以我們把焦點放到其他控件上就可以了當選擇完成后,我們動態把焦點給回Panel

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

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

 

五、最后為了看得像那么回事,美化一下Panel。

1.鼠標移到Panel上時,改變背景顏色,並畫上邊框:在MouseMove事件中添加以下代碼

 private void panelUsers_MouseMove(object sender, MouseEventArgs e)
        {
            //改變顏色
            panelUsers.BackColor = Color.FromArgb(179, 215, 243);
            //畫邊框
            Graphics g = panelUsers.CreateGraphics();
            Pen pen1 = new Pen(Color.FromArgb(47, 119, 163), 1);
            pen1.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; //實線
            g.DrawRectangle(pen1, 0, 0, this.panelUsers.Width - 1, this.panelUsers.Height - 1); //畫矩形
        }

 

1.鼠標移開Panel上時,改變去掉顏色和邊框(實則把他們設為和背景控件顏色一樣):在MouseLeave事件中添加以下代碼

 private void panelUsers_MouseLeave(object sender, EventArgs e)
        {
            //改變顏色
            panelUsers.BackColor = Color.White;
            //擦除邊框
            Graphics g = panelUsers.CreateGraphics();
            Pen pen1 = new Pen(Color.White, 1);
            pen1.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; //實線
            g.DrawRectangle(pen1, 0, 0, this.panelUsers.Width - 1, this.panelUsers.Height - 1); //畫矩形
        }

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM