C# 何时是Datagridview';什么是绘画和细胞绘画?
我有一个DatagridviewC# 何时是Datagridview';什么是绘画和细胞绘画?,c#,datagridview,draw,paint,datagridviewimagecolumn,C#,Datagridview,Draw,Paint,Datagridviewimagecolumn,我有一个Datagridviewdgv,假设我想手动影响的三列是: col1 : DataGridviewTextboxColumn, for displaying a number col2 : DataGridviewTextboxColumn, used as a color indicator, without text. BackColor will will be changed later. col3 : DataGridviewImageColumn 其他列与基础数据源各自
dgv
,假设我想手动影响的三列是:
col1 : DataGridviewTextboxColumn, for displaying a number
col2 : DataGridviewTextboxColumn, used as a color indicator, without text. BackColor will will be changed later.
col3 : DataGridviewImageColumn
其他列与基础数据源
各自的DataPropertyName
绑定。上面的3列未绑定到任何DataPropertyName
,并且会受到手动影响,例如当我想要更改图像或颜色指示器时
每次影响数据源
,我都会重新绑定数据源并dgv.Invalidate()
,以更新网格的图形
dgv
考虑3个编辑列中的手动值?之前,我手动影响了dgv_CellPaint
中的上述3列。它会起作用,但需要很长时间,我们决定将其移除。我试着把它们放在dgv_-Paint
(我用来合并标题)中,但它既不采用颜色,也不采用图像CellPainting
和Paint
?执行顺序及其区别是什么?我的粗略理解是,当单元格/网格“需要重新绘制”时,会调用它们。但我注意到它们被多次调用,不仅是在我调用Invalidate()
时,甚至当我将鼠标悬停在网格区域上时谢谢大家。是的,你说得对,它经常被称为quie。如果您有性能问题,您可能希望尝试将操作限制到某些行和列。你在画展上做了什么/做了多少?也许可以优化?例如:尽可能多地调用内置方法将产生更好的性能,而不是一直使用drawstring等..是的,我尝试将CellPaint限制到最大值,只创建矩形(使行不相互接触),用彩色笔填充那些(遵循MDSN),其余的我称为e.PaintContent(e.CellBounds);避免使用拉丝、DrawImage等,即使这样也很慢。@TaW:你说的“如果就这些”是什么意思?那么,如果我想影响手动编辑的列,应该在什么时候完成?很抱歉,我看到了您的评论的早期版本,只包含e.PaintContent(e.CellBounds);``-现在事情看起来不一样了。。!嗯,有多少行和列?9列:4个图像列和5个文本列。在第4-5行开始显示滞后。基本上,当我水平调整winform任务窗格的大小时(这是Excel的winform任务窗格应用程序),网格需要时间才能完全绘制。