それ自体の値を使用して、ListViewサブタイムのバックカラーを変更する方法
質問
独自の値を使用して、ListViewの単一セルのバックカラーをプログラム的に変更するにはどうすればよいですか?
ColorFlag列の値はデータベースから来ました。
これが私のコードです:
foreach(DataRow dr in _dataTbl.Rows)
{
_markOW = dr["Mark"].ToString();
_stock = dr["Stock"].ToString();
_SteelSectio = dr["SteelSection"].ToString();
_colo = (Int32)dr["Color"];
ListViewItem _lvi = new ListViewItem(_markOW);
_lvi.SubItems.AddRange(new string[]{_SteelSectio, _stock, _colo.ToString()});
_myListView.Items.Add(_lvi); }
これが私がセルのバックカラーを変更しようとしたコードです。
for (int _i = 0; _i < _owLV.Items.Count; _i++)
{
_myListView.Items[_i].UseItemStyleForSubItems = false;
_myListView.Items[_i].SubItems[3].BackColor = Color.FromArgb(_colo);
}
前もって感謝します
解決
私が知る限り、あなたが持っているコードはうまく見えます。簡単なWindowsフォームアプリケーションをまとめて、2つの列が詳細に表示されているフォーム上のリストビューを投げました。次のコードは正常に機能します。
var item1 = new ListViewItem( "Item 1");
item1.SubItems.Add( "Color" );
item1.SubItems[1].BackColor = Color.FromArgb( -16711936 );
item1.UseItemStyleForSubItems = false;
listView1.Items.Add( item1 );
アイテムを追加する前に、バックカラーを設定してみます。また、すべてのアイテムを同じ色に設定しているように見えます。
他のヒント
これらのリンクを見てください:
c#を使用してリストセルの色を変更する (実用的な解決策があります)
重要なポイントは、これを設定することです。
listView1.Items[0].UseItemStyleForSubItems = false;
これを行う:
foreach (DataRow dr in _dataTbl.Rows)
{
_markOW = dr["Mark"].ToString();
_stock = dr["Stock"].ToString();
_SteelSectio = dr["SteelSection"].ToString();
_color = (Int32)dr["Color"];
ListViewItem _lvi = new ListViewItem(_markOW);
_lvi.SubItems.AddRange(new string[] {_SteelSectio, _stock, _color.ToString() });
_lvi.UseItemStyleForSubItems = false;
_lvi.SubItems[2].BackColor = Color.FromArgb(_color);
_myListView.Items.Add(_lvi);
}
所属していません StackOverflow