专栏首页c#学习笔记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

但是每次选者下拉框后,显示区域总是伴随蓝色底色,不好看。原因是焦点在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彭

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#开发: 通信篇-串口调试助手

    --------------------------------------------------------------------------------...

    杨奉武
  • python pyqt5 点击按钮打开窗体

    from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QApplica...

    用户5760343
  • javafx框架tornadofx实战-益智游戏-找出指定的内容1

    用户6167008
  • easy的jsp的增删改查在一个jsp页面上

    easy的jsp的增删改查在一个jsp页面上 ...

    Java架构师必看
  • Qt5+VS2017点击按钮打开新窗口

    https://blog.csdn.net/weixin_41991128/article/details/86602385

    zls365
  • JavaSwing_8.1:焦点事件及其监听器 - FocusEvent、FocusListener

    低级别事件指示Component已获得或失去输入焦点。 由组件生成此低级别事件(如一个TextField)。 该事件被传递给每一个FocusListener或F...

    JavaEdge
  • 1-3 Winform 中的常用控件(3

    本次实验目标是在FORM窗体上建立一个列表框控件,两个组合框控件以及一个文本框控件,通过这些控件彼此之间的关联,学习并掌握ComboBox组合框控件的主要属性和...

    py3study
  • Selenium自动化测试-文件上传

    进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。

    ITester软件测试小栈
  • Easyui datagrid combobox输入框下拉(取消)选值和编辑已选值处理

    新增时通过点选指定combobox下拉列表项来实现选择、取消选择所点项(多选combobx:如果输入框中没有该选项,则选中该项,并自动显示在combobox输入...

    授客
  • easyui combobox下拉框实现多选框以及全选、全不选的实现

    //这里的id是上面的combobox的id,因为我要在点击一个按钮的之后再动态的加载出来,所以我把它单独的抽取出来了。如果需要一开始就加载数据加载方式为: ...

    故久
  • QT实现登录界面(利用MySQL保存数据和邮箱辅助注册)

           断断续续黑框框下的学生管理系统,也写了不下三次,总在黑框框下呆着也不是一回事,想挑战用qt做一个界面版的学生管理系统,至于为什么选用qt+C++,...

    花狗Fdog
  • 3-4 文件读写例子

    n学习通过文件流FileStream打开文本文件、写入文本文件、设置文件属性、实施对文件的目录操作管理的基本方法

    py3study
  • Selenium系列(十一) - 针对两种上传文件方式的实现方案

    https://www.cnblogs.com/poloyy/category/1680176.html

    小菠萝测试笔记
  • [UWP]实现Picker控件

    在WPF中,很多打开下拉框(Popup或Flyout)选择一个结果值的控件,除了ComboBox等少数例外,这种控件都以-Picker做名称后缀。因为要打开关闭...

    dino.c
  • Windows桌面软件开发-Win桌面客户端开发神器 第二课

    这是小白学习软件开发系列课程,旨在帮助对电脑编程感兴趣的朋友学习并熟悉C#技术。其中基础部分已经讲解完毕,可以查看:电脑编程入门(10)-C#面向对象编程浅聊,...

    做全栈攻城狮
  • 18.Quick QML-ComboBox

    ComboBox类似于Button按钮,但是右侧有箭头标志,当我们点击它时,会弹出一个下拉列表框,供我们选择. ComboBox也可以设置为可编辑,就类似QQ登...

    张诺谦
  • 使用JavaScript,点击按钮一个打开新的窗体

    <script type="text/javascript"> function openObj(){ window.open("success.ht...

    小小鱼儿小小林
  • Android动画:模拟开关按钮点击打开动画(属性动画之平移动画)

    在Android里面,一些炫酷的动画确实是很吸引人的地方,让然看了就赏心悦目,一个好看的动画可能会提高用户对软件的使用率。另外说到动画,在Android里面支...

    用户1155943
  • 最新jquery+easyui_api培训文档

    用户1112962

扫码关注云+社区

领取腾讯云代金券