我有一个继承自 DataGridView 的用户控件。我已经覆盖了 OnRowPrePaint、OnRowPostPaint、OnCellPaint 和其他一些东西,所以我可以根据需要绘制整个东西。除了滚动条之外,一切都很好。如何拦截正在绘制的滚动条并自己绘制?
理想情况下,有一些数据结构包含滚动条本身的边界以及实际滚动滑块的边界。然后我可以在这些位置的图形层上绘制。
有没有办法做到这一点?似乎其他所有事情都是这样,所以我想有一些方法可以做到这一点......
我有一个继承自 DataGridView 的用户控件。我已经覆盖了 OnRowPrePaint、OnRowPostPaint、OnCellPaint 和其他一些东西,所以我可以根据需要绘制整个东西。除了滚动条之外,一切都很好。如何拦截正在绘制的滚动条并自己绘制?
理想情况下,有一些数据结构包含滚动条本身的边界以及实际滚动滑块的边界。然后我可以在这些位置的图形层上绘制。
有没有办法做到这一点?似乎其他所有事情都是这样,所以我想有一些方法可以做到这一点......
从滚动条类继承时,将其添加到 Sub New:
Me.SetStyle(ControlStyles.UserPaint, True)
OnPaint 事件现在将触发。
要在单击控件时覆盖标准按钮/滑块,请执行以下操作:
Me.SetStyle(ControlStyles.UserMouse, True)
并减少闪烁:
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, False)
编辑:
我显然需要学习阅读。
没注意到
继承自 DataGridView 的用户控件
少量........
首先想到的是:使用滚动条中的绘制事件。滚动条是从Control
无论如何派生的。可能不是最佳解决方案...
public class MyDGV : DataGridView
{
this.VerticalScrollBar.Paint += new PaintEventHandler(VerticalScrollBar_Paint);
}
void VerticalScrollBar_Paint(object sender, PaintEventArgs e)
{
// Paint stuff
}