我在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();
}
由于
答案 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
}