2014-03-02 53 views
1

如何在沒有水平網格線的情況下在Listview中只顯示垂直網格線? 像在taskmanager中的例子? 有沒有辦法與GDI做到這一點? 我不知道我怎麼能意識到,每一個有用的評論贊賞:)VB.Net/C# - Listview Gridlines

回答

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 

A list of windows messages

間諜++也可以幫助找到合適的信息

+0

嘿,感謝您的回覆=) 這是一個很好的開始了,但有一些東西有點奇怪。 這將是一件好事,如果線不僅出現在單擊內部ListView之後,就像它現在是這樣,不是,我的意思是,直接在創建事件=) 此外,我點擊Listview內部和繪製線,然後我重新調整柱頭標題,線條消失了。 但是在我的Windows 7系統中,目前看起來像這樣。 [1] [1]:http://i.stack.imgur.com/hSGli.png – nexno