有这样一个ComboBox(JSXZ),其中有三个值:超级管理员、管理员、普通用户,属性ForeColor=HotTrack,DropDownStyle=DropDownList。问题一:想通过“ForeColor=HotTrack”,把选项中的字体改为蓝色,下拉选择框中是蓝色的,但是选定后变成了黑色,怎么个情况?
问题二:想把选定后的ComboBox的背景改变下,应该怎样实现?下面是“人生如梦”大侠(谢谢)给的答案,貌似存在几个错误,还有几句看不懂:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using tsleyyg.App_Help;
namespace tsleyyg
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
} private void Loginbutton_Click(object sender, EventArgs e)
{ } private void Login_Load(object sender, EventArgs e)
{
JSXZ.SelectedIndex=0;
} private void JSXZ_SelectedIndexChanged(object sender, EventArgs e)
{
Tfvalue.val = JSXZ.SelectedText;
} private void JSXZ_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
} Rectangle rect = e.Bounds(); 这一句出错。编号1
if (e.State & DrawItemState.Selected) 这一句出错。编号2
{
e.Graphics.FillRectangle(SystemBrushes.Highlight, rect);
}
else
{
e.Graphics.FillRectangle(SystemBrushes.Window,rect);
} 问题: 这是干嘛的,看不懂啊。能解释下吗?
string ColorName = JSXZ.Items(e.Index); 这一句出错,编号3
SolidBrush b = new SolidBrush(Color.FromName(ColorName));
rect.Inflate(-2,-2); 问题: 这是什么意思?
e.Graphics.FillRectangle(b,rect);
e.Graphics.DrawRectangles(Pens.Black,rect); 这一句两个错误,编号4、5 Brush b2;
if ((int)b.Color.R + (int)b.Color.G + (int)b.Color.B > 128 * 3)
{
b2 = Brushes.Black;
}
else
{
b2 = Brushes.White;
} 问题:这是什么意思,能解释下吗?
e.Graphics.DrawString(ColorName,this.JSXZ.Font,b2,rect.X,rect.Y); }
}
}
错误提示信息:
错误 1 Non-invocable member 'System.Windows.Forms.DrawItemEventArgs.Bounds' cannot be used like a method. C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 46 32 tsleyyg错误 2 无法将类型“System.Windows.Forms.DrawItemState”隐式转换为“bool” C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 47 17 tsleyyg错误 3 Non-invocable member 'System.Windows.Forms.ComboBox.Items' cannot be used like a method. C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 56 37 tsleyyg错误 4 与“System.Drawing.Graphics.DrawRectangles(System.Drawing.Pen, System.Drawing.RectangleF[])”最匹配的重载方法具有一些无效参数 C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 60 13 tsleyyg错误 5 参数“2”: 无法从“System.Drawing.Rectangle”转换为“System.Drawing.RectangleF[]” C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 60 50 tsleyyg
问题二:想把选定后的ComboBox的背景改变下,应该怎样实现?下面是“人生如梦”大侠(谢谢)给的答案,貌似存在几个错误,还有几句看不懂:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using tsleyyg.App_Help;
namespace tsleyyg
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
} private void Loginbutton_Click(object sender, EventArgs e)
{ } private void Login_Load(object sender, EventArgs e)
{
JSXZ.SelectedIndex=0;
} private void JSXZ_SelectedIndexChanged(object sender, EventArgs e)
{
Tfvalue.val = JSXZ.SelectedText;
} private void JSXZ_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
} Rectangle rect = e.Bounds(); 这一句出错。编号1
if (e.State & DrawItemState.Selected) 这一句出错。编号2
{
e.Graphics.FillRectangle(SystemBrushes.Highlight, rect);
}
else
{
e.Graphics.FillRectangle(SystemBrushes.Window,rect);
} 问题: 这是干嘛的,看不懂啊。能解释下吗?
string ColorName = JSXZ.Items(e.Index); 这一句出错,编号3
SolidBrush b = new SolidBrush(Color.FromName(ColorName));
rect.Inflate(-2,-2); 问题: 这是什么意思?
e.Graphics.FillRectangle(b,rect);
e.Graphics.DrawRectangles(Pens.Black,rect); 这一句两个错误,编号4、5 Brush b2;
if ((int)b.Color.R + (int)b.Color.G + (int)b.Color.B > 128 * 3)
{
b2 = Brushes.Black;
}
else
{
b2 = Brushes.White;
} 问题:这是什么意思,能解释下吗?
e.Graphics.DrawString(ColorName,this.JSXZ.Font,b2,rect.X,rect.Y); }
}
}
错误提示信息:
错误 1 Non-invocable member 'System.Windows.Forms.DrawItemEventArgs.Bounds' cannot be used like a method. C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 46 32 tsleyyg错误 2 无法将类型“System.Windows.Forms.DrawItemState”隐式转换为“bool” C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 47 17 tsleyyg错误 3 Non-invocable member 'System.Windows.Forms.ComboBox.Items' cannot be used like a method. C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 56 37 tsleyyg错误 4 与“System.Drawing.Graphics.DrawRectangles(System.Drawing.Pen, System.Drawing.RectangleF[])”最匹配的重载方法具有一些无效参数 C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 60 13 tsleyyg错误 5 参数“2”: 无法从“System.Drawing.Rectangle”转换为“System.Drawing.RectangleF[]” C:\Users\Administrator\Desktop\tsleyyg09-12\tsleyyg\Login.cs 60 50 tsleyyg
效果二:选定后的ComboBox的背景改变。
代码如下:
private void JSXZ_DrawItem(object sender, DrawItemEventArgs e)
{
SolidBrush sb = new SolidBrush(Color.Blue);
string str = JSXZ.Items[e.Index].ToString();
e.Graphics.DrawString(str, new Font("宋体", 10), sb, new Point(e.Bounds.X, e.Bounds.Y));
}
你在SelectedIndexChanged中修改ComboBox的BackColor不久可以了?
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.comboBox1.BackColor = Color.Red;
}