PDA

View Full Version : سوال: جدا کردن آیتمها در listbox



kh1387
جمعه 03 آبان 1387, 10:48 صبح
با سلام
من یه لیست باکس دارم که می خوام هر آیتم اون یه رنگ خاصی داشته باشه یا یه در میون رنگهای متفاوتی داشته باشه ؟
یا اینکه آیتم به آیتم خط بندی شده باشه
لطفا دوستان راهنمایی کنند؟
در ضمن این لیست باکس به مرور زمان پر می شه
با تشکر

SMRAH1
جمعه 03 آبان 1387, 11:04 صبح
سلام

اینو (http://barnamenevis.org/forum/attachment.php?attachmentid=23890&d=1222636078)برای یه پست دیگه Upload کردم ولی ListBox رنگی هم توش هست (با خیلی چیز های دیگه).فکر کنم از MSDN کپی کردم ولی دقیقا یادم نیست از کجاست!

موفق باشید

kh1387
جمعه 03 آبان 1387, 17:29 عصر
متشکرم از کمکتون
در عین حال من می خوام طوری باشه که وقتی آیتمی به لیست باکس اضافه می شه ، backcolor اون نیز تغییر کنه/
آیا راهی وجود داره؟
تشکر

SMRAH1
جمعه 03 آبان 1387, 19:45 عصر
سلام

اگر توجه کرده باشید در برنامه بالا،هر آیتم با MyItemOfListBox معرفی میشه که یک متد DrawItem وظیفه رسم آیتم رو بر عهده داره.حالا کافیه این متد رو به شکل دلخواه باز نویسی کنید.
توضیح بیشتر اینکه این متد دارای یک پارامتر از نوع DrawItemEventArgs است.این نوع دارای خصوصیتی به نام State از نوع DrawItemState است که به وسیله اون می تونید حالات مختلف آیتم مثل Focus،Selected،Disabled و ... رو تشخیص بدهید و مطابق تلفیق این حالات،آیتم رو رسم کنید.

موفق باشید.

kh1387
یک شنبه 05 آبان 1387, 18:37 عصر
دوست عزیزم من خیلی در این زمینه مهارت ندارم
میشه بیشتر توضیح بدید؟
متشکرم

SMRAH1
یک شنبه 05 آبان 1387, 19:04 عصر
سلام

برای نمونه فرض کن می خواهی آیتم ها در هنگامی که انتخاب شده اند،دارای فونت با سایز بزرگتر (فقط یک واحد) و به شکل Bold باشند.در این صورت متد DrawItem کلاس MyItemOfListBox رو به این شکل تغییر بده:

public void DrawItem(DrawItemEventArgs e)
{
if ((e.State & DrawItemState.Selected) != 0)
{
Font fo = new Font(e.Font.FontFamily, e.Font.Size+1, e.Font.Style & FontStyle.Bold);
e.Graphics.DrawString(
Text, fo, Brush,
e.Bounds, TextFormat);
}
else
{
e.Graphics.DrawString(
Text, e.Font, Brush,
e.Bounds, TextFormat);
}
}
موفق باشی