PDA

View Full Version : سوال: چند سوال درباره CheckListBox



c-sharp_South
شنبه 08 تیر 1392, 18:48 عصر
سلام.
چند تا سوال داشتم ممنون میشم جواب بدید.
فرض کنید n تا آیتم توی چک لیست باکس ما هستن.
میخواهیم با کلیک کردن روی یک Button روی هر کدام از آیتم ها به ترتیب و مثلا با زمان بندی 4 ثانیه
کار خواصی انجام شود.(فرض کنید قرار است هر آیتم به صورت یک مسیج باکس نمایش داده شود.
مثلا: messagebox.show("salam + item1");
بعد از انجام اون کار ( گذشت 4 ثانیه ) ، آیتم مورد نظر چک خورده و رنگ آن تغییر پیدا کند
سپس همین عملیات رو برای آیتم های بعدی هم انجام شود.

matin.soft
شنبه 08 تیر 1392, 20:11 عصر
سلام موردی که فرمودین سخت ترین قسمتش تغییر رنگ پس زمینه همون آیتمه . چیزی که من زیاد دنبالش گشتم . حتی به اینجا هم مراجعه کردم تا اینکه بعد از چندین روز تحقیق و بررسی پیداش کردم . حالا در اختیار شما دوست عزیز قرار می دم امیدوارم به دردتون بخوره.
ابتدا از قسمت خصوصیات چک لیست باکستون drawmode رو تغییر بدین با توجه به شکل.
http://s3.picofile.com/file/7824006234/drawmode.jpg
سپس یک رویداد drawItem طبق شکل برای چک لیست باکس ایجاد کنید .
http://s3.picofile.com/file/7824007204/drw2.jpg
و این کد رو بنویسید .
e.DrawBackground();
Graphics g = e.Graphics;

g.FillRectangle(new SolidBrush(Color.Silver), e.Bounds);

// Print text

e.DrawFocusRectangle();
و این کد رو هم می گذارم واسه کسایی که می خوان رنگ پس زمینه آیتم ها در کمبو باکس عوض بشه و به رنگ دلخواه شون دربیاد .
private void tbDrvrList_DrawItem(object sender, DrawItemEventArgs e)
{
try
{

if (e.Index < 0) { }
else
{

Brush brush;
Rectangle rect = e.Bounds;





string text = ((ComboBox)sender).Items[e.Index].ToString();

// Determine the forecolor based on whether or not the item is selected

SolidBrush b = new SolidBrush(Color.White);
if (Math.IEEERemainder((double)e.Index, 2) == 0)
{
brush = new SolidBrush(Brushes.AliceBlue);

}
else
{
brush = new SolidBrush(Brushes.Aqua);

}




if (e.State.ToString().Contains("Selected"))
{
e.Graphics.FillRectangle(Brushes.Transparent, rect);
}
else
{
e.Graphics.FillRectangle(brush, rect);

}

e.Graphics.DrawString(text, ((Control)sender).Font, Brushes.Black, e.Bounds.X, e.Bounds.Y);
}
}
catch (Exception ex) { MessageBox.Show(ex.Message, "خطا در اجرا"); }
موفق باشید.