C#:覆盖DataGridView Scrollbars(自定义OnPaint)?

时间:2010-12-16 23:12:29

标签: c# datagridview override scrollbar onpaint

我有一个继承自DataGridView的usercontrol。我已经覆盖了OnRowPrePaint,OnRowPostPaint,OnCellPaint和其他一些内容,因此我可以根据需要绘制整个内容。除了滚动条之外,一切都很美妙。如何拦截正在绘制的滚动条并绘制自己的滚动条?

理想情况下,有一些数据结构包含滚动条本身的边界以及实际滚动滑块的边界。然后我可以在这些位置绘制图形图层。

有办法做到这一点吗?看起来其他一切都是如此,所以我想有办法做到这一点......

2 个答案:

答案 0 :(得分:0)

从滚动条类继承时,将其添加到Sub New:

Me.SetStyle(ControlStyles.UserPaint, True)

现在将触发OnPaint事件。

要在单击控件时覆盖标准按钮/滑块:

Me.SetStyle(ControlStyles.UserMouse, True)

减少闪烁:

Me.SetStyle(ControlStyles.AllPaintingInWmPaint, False)

编辑:

我显然需要学会阅读。

没有注意到

  

继承自a的usercontrol   DataGridView的

位........

答案 1 :(得分:-1)

首先想到的是:使用滚动条中的绘制事件。无论如何,滚动条都来自Control。可能不是最佳解决方案......

public class MyDGV : DataGridView
{
    this.VerticalScrollBar.Paint += new PaintEventHandler(VerticalScrollBar_Paint);
}

void VerticalScrollBar_Paint(object sender, PaintEventArgs e)
{
    // Paint stuff
}