用户鼠标停在ComboBox的哪一项上?

gqqnb 2011-01-01 11:46:06
窗口上有个ComboBox。用户点击向下箭头,弹出一个列表框。用户鼠标在列表框上移动。

要求另一个标签实时显示用户鼠标停在哪一项上。

注意,用户从来没有选择一项!就像你鼠标滑过超链接,只见文字加了下划线,而你从没有点击它们一样。
...全文
162 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqqnb 2011-01-10
  • 打赏
  • 举报
回复
            string txt = comboBox1.Items[e.Index].ToString();
e.DrawBackground();
e.DrawFocusRectangle();
if (e.State == DrawItemState.Selected)
e.Graphics.DrawString(txt, e.Font, new SolidBrush(e.ForeColor), e.Bounds);
else
e.Graphics.DrawString(txt, e.Font, new SolidBrush(e.ForeColor), e.Bounds);

就可以了。多谢楼上的。
gqqnb 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sprc_lcl 的回复:]

C# code
this.comboBox1.DrawMode = DrawMode.OwnerDrawFixed;

this.comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
}

void comboBox1_DrawIte……
[/Quote]

方法很简单,但更系统画出来的有差啊。。你的框会长一点,最后一项的下面有些空白。
sprc_lcl 2011-01-01
  • 打赏
  • 举报
回复
            this.comboBox1.DrawMode = DrawMode.OwnerDrawFixed;

this.comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
}

void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
string txt = this.comboBox1.Items[e.Index].ToString();
Graphics g = e.Graphics;
Font f = new Font("宋体", 9);
if (e.State == DrawItemState.Selected)
{
this.label2.Text = txt;
g.FillRectangle(Brushes.Blue, 0, e.Index * 15, this.comboBox1.Width, 12);
g.DrawString(txt, f, Brushes.White, 0, e.Index * 15);
}
else
{
g.FillRectangle(Brushes.White, 0, e.Index * 15, this.comboBox1.Width, 12);
g.DrawString(txt, f, Brushes.Black, 0, e.Index * 15);
}
}
快溜 2011-01-01
  • 打赏
  • 举报
回复
路过,向一楼学习。
wuyq11 2011-01-01
  • 打赏
  • 举报
回复
自己添加鼠标效果protected override void WndProc(ref Message m)
{

if (m.Msg == 0x020A)
{}
else
{
base.WndProc(ref m);
}
}
http://www.codeproject.com/KB/combobox/ComboBoxFiringEvents.aspx

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧