This is an extension of this C # question override OnDrawItem I created this class class with a list
class LineStyleComboBox: System.Windows.Forms.ComboBox { Pen SolidPen; Pen DashedPen; public LineStyleComboBox() { this.DropDownStyle = ComboBoxStyle.DropDownList; this.DrawMode = DrawMode.OwnerDrawFixed; } protected override void OnDrawItem(DrawItemEventArgs e) { float[] dashValues = { 5, 2, 15, 4 }; if (e.Index > -1) { int startX = e.Bounds.Left + 5; int startY = (e.Bounds.Y + e.Bounds.Height / 2); int endX = e.Bounds.Right - 5; int endY = (e.Bounds.Y + e.Bounds.Height / 2); using ( SolidPen = new Pen(Color.Blue, (Int32)this.Items[e.Index])) { e.Graphics.DrawLine(SolidPen, new Point(startX, startY), new Point(endX, endY)); } using ( DashedPen = new Pen(Color.Blue, (Int32)this.Items[e.Index])) { e.Graphics.DrawLine(DashedPen, new Point(startX, startY), new Point(endX, endY)); DashedPen.DashPattern = dashValues; } } base.OnDrawItem(e); } }
In another form, where I need to use this LineStyleComboBox, I would like to add a collection of pen styles as elements. This is so that I can create a combo box with line styles as elements (solid handle, dotted handle).
private void frmDlgGraphOptions_Load(object sender, EventArgs e) { lineStyleComboBox2.Items.Add(solidpen,dashed pen) }
user575219
source share