1

オーナー描き下ろしコンボボックスを作りました。フォーム上ではこのように表示されます。添付ファイルでは、[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.」を選択値として設定する必要があることを意味します。

しかし、代わりに「実線テキスト」が表示されます

提案してください ありがとうございます。

4

1 に答える 1

1

を に設定ComboBoxStyleDropDownListます。これにより、 に手動でテキストを入力する機能が無効になりますComboBox。その場合、テキストの代わりに写真が表示されると思います。

于 2012-06-03T22:48:16.407 に答える