我们有一个自定义组合框,用于显示一些形状而不是文本的表单。为此,我所要做的就是重写 OnDrawItem 函数,它会显示我们想要的内容。这是一个片段供参考:
protected override void OnDrawItem(DrawItemEventArgs e)
{
base.OnDrawItem(e);
e.DrawBackground();
if (e.Index >= 0)
{
Brush brush = new SolidBrush(Color.LightGray);
int size = this.Height/2;
int origenX = e.Bounds.X + 1;
int origenY = e.Bounds.Y + 3;
System.Drawing.Drawing2D.GraphicsPath path =
new System.Drawing.Drawing2D.GraphicsPath();
switch (e.Index)
{
case 0:
e.Graphics.FillRectangle(brush, origenX, origenY, size, size);
Rectangle r = new Rectangle(origenX, origenY, size, size);
ControlPaint.DrawBorder(e.Graphics, r, Color.Black,
ButtonBorderStyle.Solid);
break;
case 1:
path.AddEllipse(origenX, origenY, size, size);
e.Graphics.FillPath(brush, path);
e.Graphics.DrawPath(Pens.Black, path);
break;
}
}
}
因此,如果您将其添加到表单并将几个项目添加到您的集合中,您会在下拉菜单中看到一个正方形和一个圆圈。
好的,所以,我现在要做的就是将这个相同的组合框添加到 DataGridView。我知道这个控件有一个 DataGridViewComboBoxColumn。我试图扩展控件,但是,我没有看到要覆盖的这个 OnDrawItem 函数。我想有类似的东西吗?任何帮助,将不胜感激。谢谢!