我有一个继承自DataGridView的usercontrol。我已经覆盖了OnRowPrePaint,OnRowPostPaint,OnCellPaint和其他一些内容,因此我可以根据需要绘制整个内容。除了滚动条之外,一切都很美妙。如何拦截正在绘制的滚动条并绘制自己的滚动条?
理想情况下,有一些数据结构包含滚动条本身的边界以及实际滚动滑块的边界。然后我可以在这些位置绘制图形图层。
有办法做到这一点吗?看起来其他一切都是如此,所以我想有办法做到这一点......
答案 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
}