المشاركات : 4
المواضيع 2
الإنتساب : Nov 2023
السمعة :
1
الشكر: 2
تم شكره 5 مرات في 2 مشاركات
السلام عليكم ورحمة الله وبركاته
لدي ListBox وفيها مجموعة من الأسماء ، كيف يمكن تلوين عدد من هذه الأسماء بحيث يتوافق مع شرط معين ، بمعنى لو
كان الأسم samir يكون لون الأسم أخضر ولو كان الأسم monir يكون لون الأسم الاحمر وهكذا...
شكراً مقدماً
المشاركات : 6
المواضيع 0
الإنتساب : Nov 2023
السمعة :
0
الشكر: 0
تم شكره 1 مرات في 1 مشاركات
لتلوين عناصر محددة في ListBox وفقًا لشرط معين، يمكنك استخدام حدث DrawItem لتعديل الرسم التوضيحي لكل عنصر في ListBox. كيف يمكن تحقيق ذلك في C#:
قم بتعيين DrawMode لـ OwnerDrawFixed في ListBox.
قم بتعريف حدث DrawItem للقيام برسم العناصر بشكل مخصص.
قد يبدو الكود كما يلي:
csharp
Copy code
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
// افحص العنصر الحالي
if (e.Index >= 0)
{
string currentItem = listBox1.Items[e.Index].ToString();
// قم بتحديد اللون وفقًا للشرط المحدد
Color itemColor = GetItemColor(currentItem);
// رسم النص باللون المحدد
using (Brush brush = new SolidBrush(itemColor))
{
e.Graphics.DrawString(currentItem, e.Font, brush, e.Bounds, StringFormat.GenericDefault);
}
}
}
// تحديد لون كل عنصر بناءً على شرط معين
private Color GetItemColor(string itemName)
{
// ضع هنا الشروط والألوان المطلوبة
if (itemName.Equals("samir", StringComparison.OrdinalIgnoreCase))
{
return Color.Green;
}
else if (itemName.Equals("monir", StringComparison.OrdinalIgnoreCase))
{
return Color.Red;
}
// إذا لم يتوافق الشرط مع أي قاعدة، فقم بتحديد لون افتراضي
return SystemColors.WindowText;
}
تأكد من ربط حدث DrawItem مع الدالة listBox1_DrawItem:
csharp
Copy code
private void Form1_Load(object sender, EventArgs e)
{
// ربط حدث DrawItem مع الدالة listBox1_DrawItem
listBox1.DrawMode = DrawMode.OwnerDrawFixed;
listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
// إضافة بعض الأسماء لـ ListBox للتجربة
listBox1.Items.Add("samir");
listBox1.Items.Add("monir");
listBox1.Items.Add("john");
listBox1.Items.Add("doe");
}
يمكنك تخصيص الشرط والألوان وفقًا لاحتياجاتك الخاصة.