كيفية تغيير الألوان الخلفية لـ ListView Subitem باستخدام قيمتها الخاصة

StackOverflow https://stackoverflow.com/questions/3562414

سؤال

كيف يمكنني تغيير اللون الخلفي لخلية واحدة بشكل برمجي في عرض قائمة باستخدام قيمتها الخاصة؟

alt text

جاءت القيم في عمود 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 Forms وألقيت عرض قائمة على النموذج مع عرضين بالتفصيل. الرمز التالي يعمل بشكل جيد.

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# ListView التفاصيل ، تسليط الضوء على خلية واحدة

تغيير لون القائمة عرض الخلية باستخدام 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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top