Forum
Merhaba
Combobox veya listbox'ta renkleri ekliyorum. Yanında da rengin gözükmesini istiyorum. Yani renk adı + renk olacak şekilde nasıl ekleme yapabilirm
Teşekkürler
Bir örnek hazırladım, inceleyin;
void Main()
{
var form = new Form();
var cmb = new ComboBox();
cmb.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
cmb.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
cmb.DropDownWidth = 240;
cmb.FormattingEnabled = true;
cmb.ItemHeight = 20;
cmb.Location = new System.Drawing.Point(54, 117);
cmb.Name = "cmb";
cmb.Size = new System.Drawing.Size(172, 26);
ArrayList renkler = new ArrayList();
Type renk = typeof(System.Drawing.Color);
PropertyInfo[] p = renk.GetProperties(BindingFlags.Static |
BindingFlags.DeclaredOnly | BindingFlags.Public);
foreach (PropertyInfo c in p)
{
cmb.Items.Add(c.Name);
}
cmb.DrawItem += (sender, args) =>
{
Graphics g = args.Graphics;
Rectangle rect = args.Bounds;
if (args.Index >= 0)
{
string n = ((ComboBox)sender).Items[args.Index].ToString();
Font f = new Font("Tahoma", 9, FontStyle.Regular);
Color c = Color.FromName(n);
Brush b = new SolidBrush(c);
g.DrawString(n, f, Brushes.Black, rect.X, rect.Top);
g.FillRectangle(b, rect.X + 110, rect.Y + 5,
rect.Width - 10, rect.Height - 10);
}
};
form.Controls.Add(cmb);
form.ShowDialog();
}