オーナー描き下ろしコンボボックスを作りました。フォーム上ではこのように表示されます。添付ファイルでは、[OK] ボタンの横にあるコンボ ボックスです。添付ファイルをご覧ください。最初に選択した「実線テキスト」の代わりに、実線画像を最初の選択として表示する必要があります。
これが私のコードです:
public partial class comboBoxLineStyle : ComboBox
{
public comboBoxLineStyle()
{
InitializeComponent();
this.DrawMode = DrawMode.OwnerDrawFixed;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
base.OnDrawItem(e);
if (e.Index < 0) { return; }
e.DrawBackground();
ComboBoxItem item = (ComboBoxItem)this.Items[e.Index];
e.Graphics.DrawImage(item.Picture,new Point(e.Bounds.X, e.Bounds.Y));
}
public new Image SelectedItem
{
get
{
return (Image)base.SelectedItem;
}
set
{
base.SelectedItem = value;
}
}
public new Image SelectedValue
{
get
{
return (Image)base.SelectedValue;
}
set
{
base.SelectedValue = value;
}
}
}
public class ComboBoxItem
{
public string text;
public Image Picture;
public Color foreColor;
public override string ToString()
{
return text;
}
public ComboBoxItem() { }
public ComboBoxItem(string pText, Image pValue)
{
text = pText;
Picture = pValue;
}
public ComboBoxItem(string pText, Image pValue, Color pColor)
{
text = pText; Picture = pValue; foreColor = pColor;
}
}
Windowsフォームで:
private void DlgGraphOptions_Load(object sender, EventArgs e)
{
ComboBoxItem item1Solid = new ComboBoxItem("Solid Line",Properties.Resources.Solidline);
ComboBoxItem item1dash = new ComboBoxItem("Dashed Line", Properties.Resources.dashedline);
ComboBoxItem item1dashed = new ComboBoxItem("Dashed Line", Properties.Resources.dashdash);
comboBoxLineStyle1.Items.Add(item1Solid);
comboBoxLineStyle1.Items.Add(item1dash);
comboBoxLineStyle1.Items.Add(item1dashed);
comboBoxLineStyle1.SelectedIndex = 0;
}
これは、「itemsolid1-solidline-image.」を選択値として設定する必要があることを意味します。
しかし、代わりに「実線テキスト」が表示されます
提案してください ありがとうございます。