DOBON.NET DOBON.NETプログラミング掲示板過去ログ

listview のサブアイテムごとのtoolTip表示

環境/言語:[Windows 7/Vista MS2010 C# Winアプリ]
分類:[.NET]

お世話になります。

listView のサブアイテムの特定の列で行ごとに個別のtooltipを表示したいのですがどうやったらできますか?

for (int i = 0; i < komoku2.Length / 3; ++i)
{
string[] item1 = { "Name", data[i], data[i], komokuBlood[i].Code }; <- 例えばとして見てください

ListViewItem lvi = new ListViewItem(item1);
lvi.ToolTipText = normalityRange[i];
lvi.Tag = "abcde";
listView2.Items.Add(lvi);
}

listView2.ShowItemToolTips = true;

上記で表示したいtoolTipのデータを転記しています。


private void listView2_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
{
ToolTip mytip = new ToolTip();
//ListViewHitTestInfo info = listView2.HitTest(e.Item.Position.X, e.Item.Position.Y);
ListViewItem lvi=listView2.GetItemAt(e.Item.Position.X, e.Item.Position.Y);

//int row = info.Item.Index;
//int col = info.Item.SubItems.IndexOf(info.SubItem);
int row = lvi.Index;
// int col = lvi.SubItems.IndexOf(lvi.SubItems.);

mytip.Show(e.Item.ToolTipText, this, e.Item.Position.X, e.Item.Position.Y, 1000);
}

上記で表示させようとしています。しかしこれでは、アイテムのツールチップデータや座標しか取得できないためそれ以降のサブアイテムが表示できません。

listView座標の(2,2)は、このデータ、また、(2,5)は、このデータという具合にtoolTipに表示したいのですが、何かいい方法はないでしょうか?

よろしくお願いします。
2012/12/10(Mon) 08:42:57 編集(投稿者)

■No31167に返信(hiroさんの記事)

>      //ListViewHitTestInfo info = listView2.HitTest(e.Item.Position.X, e.Item.Position.Y);
HitTestをもう少し頑張ってみると出来たかと思います。

サンプル
        private void listView1_MouseMove(object sender, MouseEventArgs e)
        {
            var hitpt = e.Location;
            ListViewHitTestInfo info = listView1.HitTest(hitpt);
            if (info.SubItem != null)
                toolTip1.Show("    " + info.SubItem.Text, listView1, hitpt);
        }
お世話になります。

> HitTestをもう少し頑張ってみると出来たかと思います。
> private void listView1_MouseMove(object sender, MouseEventArgs e)

ItemMouseHover()で処理するのでなくMouseMove()での処理になるのですね。

ありがとうございました。なんとか行けそうです。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板