1

水平グリッドラインなしで、リストビューに垂直グリッドラインのみを表示するにはどうすればよいですか? たとえば、タスクマネージャーのように?GDIでこれを行う方法はありますか? どうすればそれを実現できるかわかりませんが、役に立つコメントはすべて感謝しています:)

4

1 に答える 1

0

あなたと私がコントロールを作成するとき、通常は onPaint メソッドをオーバーロードし、そこですべての描画を行います。ただし、ツールボックスにある既定のコントロールのほとんどは、特定のメッセージで特定の部分を再描画するため、コントロールがいつ再描画されるかわからないため、それらの上に描画するのが難しくなります。ただし、そうすることが可能であり、いつ描画するかを判断する唯一の方法は、試行錯誤することです。

運が良ければ、いくつかのイベントで再描画するだけで十分ですが、ほとんどの場合、WndProc メソッドをオーバーロードすることをお勧めします。

私は現在、グリッド線がまったく描画されていないWindows 8コンピューターを使用しているため、水平線を削除する方法の良い例を書くのはちょっと難しいですが、背景色でそれらを塗りつぶすだけですその後、垂直のものを描きます。以下のコードは、水平グリッド線を描画します。

Public Class MyListView
Inherits ListView

Private Sub DrawLines() Handles Me.MouseUp
    Dim G = CreateGraphics()
    Dim x As Integer

    For i = 0 To Columns.Count - 1
        x += Columns(i).Width
        G.DrawLine(New Pen(Color.FromArgb(230, 230, 230)), x, 0, x, Height)
    Next
End Sub

Protected Overrides Sub WndProc(ByRef m As Message)
    MyBase.WndProc(m) ' To prevent something from drawing you can simply not do this call at a specific message
End Sub

End Class

Windows メッセージのリスト

Spy++ は、適切なメッセージを見つけるのにも役立ちます

于 2014-03-03T02:43:13.767 に答える