リストビューでマウスの移動に応じてカラムに背景色を付けたい
- 題名: リストビューでマウスの移動に応じてカラムに背景色を付けたい
- 著者: hiro
- 日時: 2013/03/06 16:54:34
- ID: 31377
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: リストビューでマウスの移動に応じてカラムに背景色を付けたい
- 著者: kiku
- 日時: 2013/03/07 11:04:00
- ID: 31382
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: リストビューでマウスの移動に応じてカラムに背景色を付けたい
- 著者: kiku
- 日時: 2013/03/07 11:10:19
- ID: 31383
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: リストビューでマウスの移動に応じてカラムに背景色を付けたい
- 著者: kiku
- 日時: 2013/03/07 13:48:09
- ID: 31384
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: リストビューでマウスの移動に応じてカラムに背景色を付けたい
- 著者: hiro
- 日時: 2013/03/08 9:34:19
- ID: 31385
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になります。
listViewの任意のカラムをマウスの移動に応じて背景色を変えたいと思いますが、うまくいきません。マウスがのっかている部分のみ変化させたい。
下記のコードでは、画面がちらつくのみで色は変化しません。
コード
ListViewItem lvi = new ListViewItem(item1);
lvi.ToolTipText = values22[0] + "/" + values22[1] + "/" + values22[2] + "/" + values22[3] + "/" + values22[4] + "/" + values22[5] + "/" + values22[6] + "/" +
values3[0] + "/" + values3[1] + "/" + values3[2] + "/" + values3[3] + "/" + values3[4] + "/" + values3[5];
lvi.Tag = "abcde";
ListViewItem item4 = listView2.Items.Add(lvi);
item4.UseItemStyleForSubItems = false;
private void listView2_MouseMove(object sender, MouseEventArgs e)
{
var hitpt = e.Location;
ListViewHitTestInfo info = listView2.HitTest(hitpt);
if (info.SubItem != null)
{
int pos = GetColumnNumber(hitpt);
if ((pos > 0 && pos < 7) || (pos > 8 && pos < 16) || (pos > 17 && pos < 24))
// マウスの移動に応じて反転セルを移動する
listView2.Items[info.Item.Index].SubItems[pos].BackColor = System.Drawing.Color.Red;
}
}
private int GetColumnNumber(Point pos)
{
// カラムのサイズから計算してマウスがポイントしているサブアイテムの位置を返す
// カラム位置を調べる
int[] colWidth = new int[listView2.Columns.Count];
for (int i = 0; i < listView2.Columns.Count; ++i)
{
colWidth[i] = listView2.Columns[i].Width;
}
int num = -1;
if (pos.X < colWidth[0] + 1)
num = 0;
else
{
int len = 0, k = 0;
foreach (int co in colWidth)
{
len += co;
if (pos.X < len)
{
num = k;
break;
}
++k;
}
}
return num;
}
よろしくお願いします。