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 に答える