1

我有一个继承自 DataGridView 的用户控件。我已经覆盖了 OnRowPrePaint、OnRowPostPaint、OnCellPaint 和其他一些东西,所以我可以根据需要绘制整个东西。除了滚动条之外,一切都很好。如何拦截正在绘制的滚动条并自己绘制?

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

有没有办法做到这一点?似乎其他所有事情都是这样,所以我想有一些方法可以做到这一点......

4

2 回答 2

0

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

Me.SetStyle(ControlStyles.UserPaint, True)

OnPaint 事件现在将触发。

要在单击控件时覆盖标准按钮/滑块,请执行以下操作:

Me.SetStyle(ControlStyles.UserMouse, True)

并减少闪烁:

Me.SetStyle(ControlStyles.AllPaintingInWmPaint, False)

编辑:

我显然需要学习阅读。

没注意到

继承自 DataGridView 的用户控件

少量........

于 2011-01-11T10:00:17.407 回答
-1

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

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

void VerticalScrollBar_Paint(object sender, PaintEventArgs e)
{
    // Paint stuff
}
于 2010-12-17T18:43:19.303 回答