C#:关于WinForm中ComboBox的探究
来源:互联网 发布:和女友重口味玩法知乎 编辑:程序博客网 时间:2024/05/22 07:50
ComboBox就是.net里面用于做下拉菜单的控件。
平时用得很多,却对它知道的很少。
其实ComboBox并不像平常以为的那样是一整个控件。而是由其他控件复合而成的。
其中,下拉菜单的那个三角形按钮和输入框的边框都是ComboBox的整体。是绘制出来的。
而,那个可以输入的部分则是由一个无边框的Edit控件构成的。
知道了这一点就可以去解释一个问题。
我们发现,当ComboBox的Enable设置为False的时候,整个控件会变成灰色。
在有的情况下,我们需要改变ComboBox在不可用状态下的颜色。
我们可以去继承它,然后重绘它的外观。比如:
经过绘制了边框和填充了背景色之后,我们发现ComboBox在不可用状态下的样子有点让人不解
也就是说,经过绘制,我们没有把那个按钮画出来,然后边框画成了蓝色,背景画成了红色。
但是,中间那块灰色区域是怎么回事?
这就是因为。ComboBox会把自己的Enable属性赋值给Edit控件。从而导致Edit控件也出现了不可用。
但是由于重绘的时候只能重绘ComboBox,里面的Edit的样式是自动由系统绘制的,所以控制不到。
对于这一点应该怎么办呢?
既然里面是一个控件。那么就应该可以拿到它的句柄。方法如下,先声明API:
在适当的地方调用
就可以得到里面的Edit的句柄。
值得注意的是,上面这句只有在ComboBox的外部调用的时候才行。如果是在ComboBox内部调用。会出错。
所以可以在ComboBox的外面再包一层用户控件。在Enable属性被更改的时候来做这个。
拿到Edit的句柄之后,我们只要用API ShowWindow来隐藏掉它。然后再自己重绘Text到ComboBox的背景上,就可以做出一个可以改变颜色的不可用ComboBox了。
- C#:关于WinForm中ComboBox的探究
- C#:ComboBox中TextChanged事件不被触发的探究
- C#:ComboBox中TextChanged事件不被触发的探究
- winform 关于comboBox控件的SelectedIndexChanged
- 在WinForm的DataGrid中加入ComboBox
- C#(Winform)中ComboBox中添加项(ListBox)类的自定义过程
- c#(winform)中ComboBox和ListBox添加项完全解决
- c#(winform)中ComboBox和ListBox添加项完全解决
- 关于c#sql中返回的dt问题探究
- 解决WinForm中ComboBox没有value值的bug
- winform中设置combobox的只能选择不能输入
- C# WinForm 中ComboBox数据绑定的问题
- 关于C#Winform中进度条的实现方法
- 关于C中scanf函数的%c解释符的探究
- C#(WinForm) ComboBox和ListBox添加项
- 关于PDO中prepare方法的探究
- c#(winform)中ComboBox和ListBox添加项完全解决[ZZ]
- C#WinForm开发之在ComboBox、ListBox中加载键值对
- shell脚本编程应用:进制转化,bc中的ibase与obase
- 接到第一个项目
- hello
- ResourceFilter
- Win7 IIS 7.5 设置 ASP
- C#:关于WinForm中ComboBox的探究
- UML中4种关系:依赖、关联、泛化和实现 【转】
- ASP.NET前台标记符简介
- 如何阅读源代码
- android project bug
- 文件夹右键菜单添加快捷DOS命令的两种方法
- RHEL5下载地址
- ubuntu9.04-ns2安装
- php+mysql+apache环境搭建