Я использую 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
.
Есть идеи, как нарисовать значок после того, как пользователь закончил редактирование ячейки?