我正在使用带有DataGridView
的{{1}},我需要在组合框项目的左侧添加图标。我目前正在使用DataGridViewComboBoxColumn
事件以及EditingControlShowing
事件,如下所示:
ComboBox.DrawItem
问题是只有在单元格处于编辑模式时才会绘制图标。一旦我点击单元格外的某个地方,就会触发private void pFiles_dgvFiles_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox)
{
ComboBox cb = (ComboBox)e.Control;
cb.DrawMode = DrawMode.OwnerDrawFixed;
cb.DrawItem -= combobox1_DrawItem;
cb.DrawItem += combobox1_DrawItem;
}
}
private void combobox1_DrawItem(object sender, DrawItemEventArgs e)
{
// Drawing icon here
}
事件并重新绘制单元格(没有图标)。
我尝试使用CellEndEdit
事件来解决此问题,但这会导致DataGridView.CellPainting
的下拉按钮消失。
有关如何在用户完成单元格编辑后绘制图标的想法吗?
答案 0 :(得分:2)
在CellPainting事件中,您可以尝试绘制现有控件:
e.PaintBackground(e.ClipBounds, true);
e.PaintContents(e.ClipBounds);
//Draw your stuff
e.Handled = true;
或查看ComboBoxRenderer
类以查找DrawDropDownButton
方法(或ControlPaint.DrawComboButton
查看非视觉样式。)