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

listViewのオーナードローでサブアイテムにアイコン表示

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

お世話になります。

listviewを利用し指定したサブアイテムに背景色を表示しています。
これに、さらにサブアイテムの一部にアイコンを表示させたいのですが、オーナードローをしている場合どのように処理すればいいでしょうか?

教えてください。

単に、サブアイテムにアイコンを表示するには下記のサンプルが有用でしたが、オーナードローしているlistViewでは、うまくいきませんでした。

http://www.codeproject.com/Articles/7630/ListView-with-Image-on-SubItems

オーナードローは、下記のようにしています.
listView1.OwnerDraw = true;

private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
// 選択されているアイテムの描画
if ((e.ItemState & ListViewItemStates.Selected) == ListViewItemStates.Selected)
{
e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds);
e.Graphics.DrawString(e.SubItem.Text, e.Item.Font, SystemBrushes.HighlightText, e.Bounds);
return;
}
// 奇数行は背景色を変更して描画
if ((e.Item.Index % 2) != 0)
{
e.Graphics.FillRectangle(Brushes.LightYellow, e.Bounds);
e.Graphics.DrawString(e.SubItem.Text, e.Item.Font, SystemBrushes.WindowText, e.Bounds);
}
else
// 偶数行はデフォルト描画
{
e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds);
e.Graphics.DrawString(e.SubItem.Text, e.Item.Font, SystemBrushes.WindowText, e.Bounds);
}
:
:

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
// 描画はOSに任せる
e.DrawDefault = true;
}

オーナードローしていなければ、下記のコードでサブアイテムのテキストとアイコンを追加できました。
OAKListView.LV_ITEM lvi2 = new OAKListView.LV_ITEM();
// Row of the item
lvi2.iItem = 3;
// Column of the item
lvi2.iSubItem = 1;
lvi2.pszText = "OAKListView-" + 5.ToString();
//Here you pass the mask of the item. In this case
//the mask is the both, Image and the text
lvi2.mask = OAKListView.LVIF_IMAGE | OAKListView.LVIF_TEXT;
// Image index on imagelist
lvi2.iImage = 1;
// Sending a message to make the changes
OAKListView.SendMessage(listView1.Handle, OAKListView.LVM_SETITEM, 0, ref lvi2);
■No31067に返信(hiroさんの記事)

GraphicsにDrawImage,DrawIconするだけです。
お世話になります。

>
> GraphicsにDrawImage,DrawIconするだけです。

気付かずに色々ググってなかなか答えが見つからないので投稿しましたが、どうやら検索する方向が違っていたみたいですね。

DrawImage,DrawIconという関数の存在を考えもしませんでした。

ありがとうございます。お世話おかけしました。

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