WinForm里面的ListBox控件存在这样一个问题,当项文本长度超过控件宽度时,超出部分的文本直接被截掉,也不会出现提示信息,真是一大不幸!!
幸运的是让我看到这篇C++重写的带Tooltip的ListBox,所以造就了C#版的TipListBox
- class TipListBox : ListBox
- {
- ToolTip tip;
- public TipListBox()
- {
- tip = new ToolTip();
- }
- private void SetTipMessage(string strTip)
- {
- tip.SetToolTip(this, strTip);
- }
- /// <summary>
- /// 重写鼠标移动事件
- /// </summary>
- /// <param name="e"></param>
- protected override void OnMouseMove(MouseEventArgs e)
- {
- base.OnMouseMove(e);
- int idx = IndexFromPoint(e.Location);// 获取鼠标所在的项索引
- if (idx == -1) //鼠标所在位置没有 项
- {
- SetTipMessage(""); //设置提示信息为空
- return;
- }
- string txt = GetItemText(this.Items[idx]); //获取项文本
- SetTipMessage(txt); //设置提示信息
- }
- }