2014-03-02 2 views
1

가로 눈금 선없이 세로 눈금 선만 내 목록보기에 표시 할 수 있습니까? 예를 들어 taskmanager와 같은가요? GDI를 사용하여이 작업을 수행 할 수 있습니까? 내가 어떻게 실현할 수 있는지 잘 모르겠다. 도움이되는 모든 의견은 높이 평가된다. :)VB.Net/C# - Listview 눈금 선

답변

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 시스템에서는 현재 이와 같이 보입니다. ! [Windows 7 x64의 세로 목록보기 라인] [1] [1] : http://i.stack.imgur.com/hSGli.png – nexno

관련 문제