C#:在分项显示工具提示(c#: show tooltip on subitem)

2019-09-20 22:15发布

我有一个列表视图,并且在列(不是第一)中的一个我想显示一个错误代码。

我一直没能做到的就是让工具提示中显示。 我有

this.lstList.ShowItemToolTips = true;
...
ListViewItem value = lstList.Items.Add(name, name, 0);
...
if (lstList.Columns.Contains(lstColErrorCode))
{                                
  value.SubItems.Add(new ListViewItem.ListViewSubItem(value, errorCode.ToString()));
  value.ToolTipText = errorCode.ToString("X");
}

我想获得的代码的十六进制值以上的十进制值的工具提示中显示,但它显示了名称的上方。

我一直没能得到任何我试图使用(就像试图让子项的坐标)。 我将不胜感激任何建议。

Answer 1:

此代码对我的作品

ToolTip toolTip1 = new ToolTip();

void initMethod()
{
    lstList.MouseMove += new MouseEventHandler(lstList_MouseMove);//mousemove handler
    this.lstList.ShowItemToolTips = true;            
    toolTip1.SetToolTip(lstList,"");// init the tooltip
    ...
    ListViewItem value = lstList.Items.Add(name, name, 0);
    ...
    if (lstList.Columns.Contains(lstColErrorCode))
    {                                
        ListViewItem.ListViewSubItem lvs =  value.SubItems.Add(new ListViewItem.ListViewSubItem(value, errorCode.ToString()));
        lvs.Tag = "mydecimal"; // only the decimal subitem will be tooltiped
    }
}

从列表视图MouseMove事件:

void lstList_MouseMove(object sender, MouseEventArgs e)
{
    ListViewItem item = lstList.GetItemAt(e.X, e.Y);
    ListViewHitTestInfo info = lstList.HitTest(e.X, e.Y);

    if ((item != null) && (info.SubItem != null) && (info.SubItem.Tag!=null) && (info.SubItem.Tag.ToString() == "mydecimal"))
    {
        toolTip1.SetToolTip(lstList,((decimal)info.SubItem.Text).ToString("X"));
    }
    else
    {
        toolTip1.SetToolTip(lstList, "");
    }
}


文章来源: c#: show tooltip on subitem