我正在开发一个使用 datagridview 来可视化一些数据的应用程序。数据在逻辑上是四乘四的。为了可视化这一点,我想在 datagridview 中每第四行绘制一条线/边框。
我已经通过编写以下 RowPostPaint 方法(剥离了批量代码)来做到这一点
System::Void dataGridView1_RowPostPaint(System::Object^ sender, Forms::DataGridViewRowPostPaintEventArgs^ e) {
A = ...
Rectangle rowBorder = dataGridView1->GetRowDisplayRectangle(e->RowIndex,true);
if(A->ID % 4 == 0){
e->Graphics->DrawLine(gcnew Pen(Drawing::Color::Black),(float)
rowBorder.X ,(float)(rowBorder.Y + rowBorder.Height-2), (float) rowBorder.X +
rowBorder.Width ,(float) (rowBorder.Y + rowBorder.Height-2) );
}
}
出于某种原因,当我使用滚动条或调整窗口大小时,绘画会损坏(显示的线条多于应有的线条,见图)。例如,通过选择受影响的行来强制重绘会使错误的行消失。
我已经尝试了几个技巧(双缓冲、剪辑等)来解决这个问题,但我还不能这样做。正如您可能已经知道的那样,我对 c++/cli 中的图形/绘画非常陌生。现在我没有想法了,我希望你能来一些新鲜的