نوشته شده توسط
voice.of.silence
سلام دوستان:
من می خواهم که تمام رنگها را به combobox اضافه کنم و از آن در برنامه برای تغییر رنگ استفاده کنم.
آیا شما کدی را می شناسید که با استفاده از آن بتوان لیست همه ی رنگها را به Combobox اضافه کرد.
اگر شما چنین کدی را دارید لطفا مرا در ایجاد این combobox کمک کنید.
با سپاس .
Voice of Silence
نداشتم ولی نوشتم. لطفا یک فرم جدید Form1 ایجاد کنید و سپس یک عدد ComboBox با نام comboBox1 را روی فرم Form1 تان قرار دهید، این کد فرم تان است :
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Load += new EventHandler(InitColors);
}
private void InitColors(object sender, EventArgs e)
{
comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.BeginUpdate();
comboBox1.Items.Clear();
foreach (System.Reflection.PropertyInfo prop in typeof(Color).GetProperties())
{
if (prop.PropertyType == typeof(Color))
{
comboBox1.Items.Add(prop.Name);
}
}
comboBox1.EndUpdate();
}
void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index == -1)
{
return;
}
StringFormat format = new StringFormat();
Color c = Color.FromName(comboBox1.Items[e.Index].ToString());
format.LineAlignment = StringAlignment.Center;
format.Alignment = StringAlignment.Near;
e.DrawBackground();
Rectangle rect = new Rectangle(e.Bounds.X + 2, e.Bounds.Y + 1, 18, e.Bounds.Height - 3);
rect = new Rectangle(rect.X + 1, rect.Y + 1, rect.Width - 1, rect.Height - 1);
e.Graphics.FillRectangle(new SolidBrush(c), rect);
e.Graphics.DrawRectangle(Pens.Black, rect);
rect = new Rectangle(e.Bounds.X + 23, e.Bounds.Y, e.Bounds.Width - 23, e.Bounds.Height);
e.Graphics.DrawString(comboBox1.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), rect, format);
}
}