水平グリッドラインなしで、リストビューに垂直グリッドラインのみを表示するにはどうすればよいですか? たとえば、タスクマネージャーのように?GDIでこれを行う方法はありますか? どうすればそれを実現できるかわかりませんが、役に立つコメントはすべて感謝しています:)
1898 次
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
Spy++ は、適切なメッセージを見つけるのにも役立ちます
于 2014-03-03T02:43:13.767 に答える