在把 ListBox 的 DrawMode 设置为 DrawMode.OwnerDrawVariable
以下是 DrawItem 方法中的代码:if(e.Index >= 0)
{
e.DrawBackground();
e.DrawFocusRectangle();
string str = Convert.ToString(listBox1.Items[e.Index]);
bool selected = (e.State & DrawItemState.Selected) == DrawItemState.Selected ? true : false;
Brush br = selected ? Brushes.White : Brushes.Black;
e.Graphics.DrawString(str, listBox1.Font, br, e.Bounds);
}这面的代码在一般情况下没有任何的问题,但当把 listBox 的 SelectedMode 设置为 SelectionMode.None 时,这下就出问题了。
在不自绘的 listBox 中,如果把 SelectedMode 设置为 None 时,listBox 不能选定任何的行选定背景,只会有点击的项上绘制一个焦点框, SelectedIndex 返回 -1.但在使用自绘时,每点击一项都会绘制背景,而且以前点击的项的背景也会绘制出来,不知道是不是.NET中的一个 BUG,还是代码哪里出了问题?不知道说的清不清楚,大家可以自己试一下
以下是 DrawItem 方法中的代码:if(e.Index >= 0)
{
e.DrawBackground();
e.DrawFocusRectangle();
string str = Convert.ToString(listBox1.Items[e.Index]);
bool selected = (e.State & DrawItemState.Selected) == DrawItemState.Selected ? true : false;
Brush br = selected ? Brushes.White : Brushes.Black;
e.Graphics.DrawString(str, listBox1.Font, br, e.Bounds);
}这面的代码在一般情况下没有任何的问题,但当把 listBox 的 SelectedMode 设置为 SelectionMode.None 时,这下就出问题了。
在不自绘的 listBox 中,如果把 SelectedMode 设置为 None 时,listBox 不能选定任何的行选定背景,只会有点击的项上绘制一个焦点框, SelectedIndex 返回 -1.但在使用自绘时,每点击一项都会绘制背景,而且以前点击的项的背景也会绘制出来,不知道是不是.NET中的一个 BUG,还是代码哪里出了问题?不知道说的清不清楚,大家可以自己试一下
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货