ComboBox DropDownList和图片和文本中的项目

时间:2011-02-24 15:30:27

标签: c# winforms combobox

我在WindowsForms中有一个ComboBox,我手动绘制项目。每个项目由图片和文本组成,因此项目高度为34像素。

我想将ComboBox的DropDownStyle设置为DropDownList以启用用户输入。但是当我选择一些项目时,它会变形,因为图片和文字是可见的。如果用户选择某个项目,我想只显示文本。

protected override void OnDrawItem(DrawItemEventArgs e)
        {

            e.DrawBackground();

            if (e.Index > -1)
            {

                Piece item = this.Items[e.Index] as Piece;


                e.Graphics.FillRectangle(Brushes.Gray, new Rectangle(e.Bounds.Left + 6, e.Bounds.Top + 6, 22, 22));

                e.Graphics.DrawImage(item.Image, new Rectangle(e.Bounds.Left + 7, e.Bounds.Top + 7, 20, 20));

                e.Graphics.DrawString(item.Title, e.Font, 
                    new SolidBrush(e.ForeColor), e.Bounds.Left + 34, e.Bounds.Top + 10);

            }

            e.DrawFocusRectangle();

        }

由于

1 个答案:

答案 0 :(得分:2)

1)你的意思是DropDown的DropDownStyle?这是允许用户输入的设置。

2)'变形'是什么意思 - 你在哪里看到这个?


编辑:如果此OnDrawItem调用是渲染顶部框 - e.State设置了ComboBoxEdit位标志。检查这个以不同的方式呈现。

if( (e.State & DrawItemState.ComboBoxEdit) != DrawItemState.ComboBoxEdit ) 
{
    // Do drawing logic just for the top edit part
}
else
{
    // Draw logic here for rendering in the drop-down
}