【发布时间】:2011-09-20 08:56:05
【问题描述】:
我正在使用DataGridView 和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 事件解决此问题,但它导致DataGridViewComboBoxColumn 的下拉按钮消失。
关于在用户完成单元格编辑后如何绘制图标有什么想法吗?
【问题讨论】:
标签: c# winforms datagridview datagridviewcomboboxcell custom-draw