gpt4 book ai didi

c# - DatagridViewComboBoxColumn 的自定义绘制

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:56 26 4
gpt4 key购买 nike

我正在使用带有 DataGridViewComboBoxColumnDataGridView,我需要在组合框项的左侧添加图标。我目前正在使用 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 的下拉按钮消失。

关于用户完成单元格编辑后如何绘制图标的任何想法?

最佳答案

在您的 CellPainting 事件中,您可以尝试在现有控件上绘画:

e.PaintBackground(e.ClipBounds, true);
e.PaintContents(e.ClipBounds);

//Draw your stuff

e.Handled = true;

或查看 ComboBoxRenderer 类的 DrawDropDownButton 方法(或查看非视觉样式的 ControlPaint.DrawComboButton)。

关于c# - DatagridViewComboBoxColumn 的自定义绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7482534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com