2009-09-24 2 views
1

궁금 해서요 ... View.List 스타일을 사용하여 그림을 그리는 ListViewItems가있는 WinForms System.Windows.Forms.ListView가 있습니다. 각 ListViewItem에는 ListView의 SmallImageList에서 가져 오는 "SmallIcon"이 있습니다.C# ListView : 가능한 ListViewItem 오프셋?

내 문제는 아이콘이 왼쪽 테두리에 너무 가깝게 보이고 있다는 것입니다. 나는 경계와 ListViewItem의 Position 속성을 아무런 쓸모 없어 보이려고 노력했다.

어쨌든 ListViewItems에 어떤 종류의 오프셋이 있습니까?

+0

언제든지 스크린 샷을 표시 할 수 있습니까? Jing은 친구입니다 : www.jingproject.com – balexandre

답변

3

. ListViewList보기에있는 경우 ListViewItem.Position 설정은 아무 작업도 수행하지 않습니다.

간단히 말해서 모든 ListViewItem의 Text 값 앞에 단일 공백을 붙여 넣는 것입니다. 약간 못 생겼지 만 그렇게하기 쉽다.

픽셀 수준 제어를 실제로 사용하려면 소유자가 그려야합니다. 언제나 그렇듯이, .NET ListView로 무엇이든하면, ObjectListView은 소유자가 당신의 항목을 사소한 것으로 만듭니다.

+0

나는 이것을 대답으로 받아들이는 데 오랜 시간이 걸렸지 만 마침내 "모든 ListViewItem의 텍스트 값에 단일 공백으로"접두사를 붙였다. 그것은 당신이 말한 것처럼 작동하지만 약간 못 생깁니다. – SuperOli

1

작은 이미지의 왼쪽에 공백을 추가하십시오.

16x16 이미지를 사용하는 경우 왼쪽에 8 개의 흰색 (또는 ListView 배경색) 픽셀을 추가하여 24x16으로 변경하십시오.

+0

simpel하지만 효과적입니다! 좋은 답변 – RvdK

0

예를 들어서 어떤 스크린 샷을 찍었는지 알기위한 스크린 샷이 좋습니다.

재미있는 것 ... Windows 탐색기는 ListView를 사용하여 파일과 폴더를 표시합니다. 나는 보통 보고서 또는 세부 정보 모드에서 내보기를 실행합니다. 난 그냥 목록보기 모드로 전환하고 당신이 설명하는 정확한 문제를 참조하십시오! Yikes. Win32 개체와 해당 뷰 유형의 버그 일 수 있습니다!

빠른 해결 방법은 ListView에 단일 열이있는 보고서 스타일을 사용하거나 직접 구현하는 것일 수 있습니다. .Net의 FlowLayoutPanel은 사용자 정의 목록보기의 출발점으로 매우 잘 작동합니다.

0

View.List 스타일을 사용함에 따라 맞춤형 그림을 구현하거나 이미지 패딩을 고려해야 할 것으로 생각됩니다. SetBoundsCore 또는 SetClientSizeCore (또는 이와 비슷한)을 재정 의하여 ListView 컨트롤을 재정의하고 해당 경계를 조작 할 수 있습니다. ListViewView.Details 뷰에 대한 설정이이 ListViewItem.IndentCount 속성을 사용하여 수행 할 수 있다면

그러나 :

는 들어있는 ListView의보기 속성은 IndentCount 속성 을 사용할 수 있습니다

경우에만 Details로 설정하면 이고 ListView의 SmallImageList 속성은 입니다. 출처 : Win32에서 목록보기 컨트롤이 아이콘과 라벨 (모든보기에서뿐만 아니라 목록) 사이의 공간을 높일 수있는 설정이없는 MSDN

+0

IndentCount는 SmallImageList 너비의 배수로 작동합니다. IndentCount를 1로 설정하면 텍스트를 16 픽셀 들여 쓰기합니다 (SmallImageList가 16x16 인 경우). 나는 그것이 @Superoli가 필요 이상이라고 생각한다. – Grammarian

1

당신은 다음의 ListView보기 LargeIcons에있는 경우 위치보다 공간이 패딩을 추가 할 수있는 매우 간단한 방법은 모든 항목의 텍스트를 앞에 붙여, 이미 언급 한 바와 같이 item.position

2

를 사용하여 텍스트 수 있습니다.그러나 이것은 꽤 중요한 단점을 가지고 있습니다. 이렇게하면 ListView에 포커스가있을 때 이름을 입력하기 만하면 ListView에서 항목을 찾을 수 없습니다.

0

StateImageList 속성을 설정하면 아이콘 앞에 16px 공간을 추가 할 수 있습니다. StateImageList에 첫 번째 항목으로 너비가 일치하는 이미지를로드하여이 추가 공간을 조정할 수 있다고 생각합니다. 그러나 나는 이것을 시험하지 않았다.

This thread은 정반대의 문제에 대해 설명합니다.