كيفية تغيير الألوان الخلفية لـ ListView Subitem باستخدام قيمتها الخاصة
سؤال
كيف يمكنني تغيير اللون الخلفي لخلية واحدة بشكل برمجي في عرض قائمة باستخدام قيمتها الخاصة؟
جاءت القيم في عمود 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);
}
لا تنتمي إلى StackOverflow