本人要改变ComboBox在Enabled = false;时Text部分的景色。
据本来跟踪发现,当enabled = false;时。所绘制的字体不是以backColor为背景色。
故不能通过设置BackColor来得到理想结果。
本人尝试过
不知是否有谁知道,可以重载来得之?
据本来跟踪发现,当enabled = false;时。所绘制的字体不是以backColor为背景色。
故不能通过设置BackColor来得到理想结果。
本人尝试过
不知是否有谁知道,可以重载来得之?
解决方案 »
- C#中怎么对数据库表数据进行统计,制表输出统计结果?
- 呼救dds.Fill(ddt)报错,标准表达式中数据类型不匹配。
- 请问回调机制的详解
- 加密狗使用问题
- c#复制自身程序
- 把.richTextBox1的内容副给printPreviewDialog.Document
- c#中如何调用dll中的char*参数,报错:尝试读取或写入受保护的内存。 这通常指示其他内存已损坏
- C#中MDI程序怎么获得当前激活的子窗体啊?
- EF数据库优先模式开发时,怎样自定义一个数据库中没有对应字段的属性?
- 大咖们,请问如何用C语言实现检测到鼠标左键按下时,等效于按下printscreen键
- 100在线求救!
- 一个女生的提问(急!)
1. 完全自己写一个combobox,但是这个要用很多的win32api2. 继承现有分combobox,在它绘制textbox的时候,在textbox上面覆盖一层颜色
楼上所言对了一半。的确,实际上MS是用CreateWindow来创建标准的控件
它的绘制完全由系统来控件。一般是无法直接通过重载
OnPaint来解决的,因为你需要设定UsePaint然后才可以激发OnPaint事件,而且
你必需完全自已来绘制整个控件。
那么如果你只是想改变一下字体的颜色是否可以呢。答案是可以的
你需要重载WndProc来直接处理绘图消息
private static int WM_PAINT =0x000F;
protected override void WndProc(ref Message m)
{
base.WndProc (ref m);
if(m.Msg == WM_PAINT)
{
Graphics g =this.CreateGraphics();
g.DrawLine(new Pen(Color.Blue), 0,0,100,100);
g.Dispose();
}
}
上面这段代码就可以简单地绘制一条蓝色的直线。同样也可以重新改变字体的颜色
lz不是说背景吗?另外,字体颜色不需要这样用msg,直接使用.net的类库就可以了