С#: показать подсказку в подпункте

72
8

У меня есть listview, и в одном из столбцов (не первый) я хочу отобразить код ошибки.


То, что я не смог сделать, - показать всплывающую подсказку. У меня


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");
}

Я хотел бы получить шестнадцатеричное значение кода, которое будет отображаться во всплывающей подсказке выше десятичного значения, но оно отображается над именем.


Мне не удалось получить что-либо, что я пытался работать (например, пытаться получить координаты подтипа). Я был бы признателен за любое предложение.

спросил(а) 2012-08-07T07:34:00+04:00 7 лет, 4 месяца назад
1
Решение
76

этот код работает для меня


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, "");
}
}

ответил(а) 2012-08-07T08:19:00+04:00 7 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема