21

独自の値を使用して、リストビュー内の単一のセルの背景色をプログラムで変更するにはどうすればよいですか?

代替テキスト

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

前もって感謝します

4

2 に答える 2

41

私の知る限り、あなたが持っているコードは問題ないように見えます。簡単なWindowsフォームアプリケーションをまとめて、2列の詳細ビューを持つフォームにListViewを投げました。次のコードは正常に機能します。

var item1 = new ListViewItem( "Item 1");
item1.SubItems.Add( "Color" );
item1.SubItems[1].BackColor = Color.FromArgb( -16711936 );
item1.UseItemStyleForSubItems = false;

listView1.Items.Add( item1 );

アイテムを追加する前に、BackColorを設定してみます。また、すべてのアイテムを同じ色に設定しているように見えますが、これはおそらく希望どおりではありません。

于 2010-08-25T02:38:51.233 に答える
5

これらのリンクを見てください:

C#ListView Detail、単一のセルを強調表示

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);
}
于 2010-08-25T02:33:01.187 に答える