これはこの質問の拡張です C# オーバーライド OnDrawItem このカスタム コンボ ボックス クラスを作成しました
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);
}
}
この LineStyleComboBox を使用する必要がある別のフォームでは、ペン スタイルのコレクションを項目として追加するにはどうすればよいでしょうか。これは、項目 (実線のペン、破線のペン) として線のスタイルを持つコンボ ボックスを実現できるようにするためです。
private void frmDlgGraphOptions_Load(object sender, EventArgs e)
{
lineStyleComboBox2.Items.Add(solidpen,dashed pen)
}