ListBox های رنگارنگ

ARAsoftware

Member
سلام دوستان
زبان= #C
میخواستم بدونم چطوری میشه لیست باکسی داشته که بعضی از آیتم هاش دارای رنگ مجزا باشن
مثل لیست فابل هایی که آنتی ویروس nod32 در حین اسکن نشون میده، همه آیتم ها مشکی هستن ولی اونایی که ویروسن رنگشون قرمزه
 

the_king

مدیرکل انجمن
سلام دوستان
زبان= #C
میخواستم بدونم چطوری میشه لیست باکسی داشته که بعضی از آیتم هاش دارای رنگ مجزا باشن
مثل لیست فابل هایی که آنتی ویروس nod32 در حین اسکن نشون میده، همه آیتم ها مشکی هستن ولی اونایی که ویروسن رنگشون قرمزه

ساده ترین راهش اینه که ListBox رو در وضعیت OwnerDraw قرار دهید و با رخداد DrawItem هر طور که می خواهید
آیتم های داخلش رو رسم کنید. مثلا اگر آیتم با کاراکتر * شروع بشه با رنگ قرمز رسم اش کنید.

اگه یک ListBox با اسم listBox1 روی فرم دارید، کد های زیر رو به فرم اضافه کنید :
کد:
[COLOR="Gray"]        private void Form1_Load(object sender, EventArgs e)
        {[/COLOR]
            listBox1.DrawMode = DrawMode.OwnerDrawFixed;
            listBox1.DrawItem += new DrawItemEventHandler(OnDrawItem);

            listBox1.Items.Add("First");
            listBox1.Items.Add("*Second");
            listBox1.Items.Add("Thrid");
            listBox1.Items.Add("*Fourth");
[COLOR="Gray"]        }[/COLOR]

        void OnDrawItem(object sender, DrawItemEventArgs e)
        {
            ListBox obj = (ListBox)sender;
            string item = obj.Items[e.Index].ToString();
            Brush brush;
            if (item.StartsWith("*"))
            {
                item = item.Substring(1);
                brush = Brushes.Red;
            }
            else
            {
                brush = new SolidBrush(obj.ForeColor);
            }
            e.DrawBackground();
            e.Graphics.DrawString(item, obj.Font, brush, e.Bounds);
            e.DrawFocusRectangle();
        }
 

جدیدترین ارسال ها

بالا