2010-12-29 7 views
0

OwnerDraw = true 및 Details view 모드의 listview가 있습니다. 목록에 3,4 또는 5 개의 항목이있는 경우 각 항목의 높이가 listview.Height/3, 4 또는 5로 스크롤되지 않고 표시됩니다.ListView OwnerDraw 항목 높이

항목 높이는 글꼴 크기에 따라 다릅니다. e.Graphics.DrawString (....) :

이 나는 ​​일정한 글꼴 크기 DrawItem 이벤트에서 텍스트를 그릴

listView.Font = new Font("Arial", listView.Height/nOfItems); 

작동하지 않습니다.

+1

글꼴을 설정하는 것이 좋습니다. 그러나 픽셀 단위로 크기를 전달합니다. 포인트가 아닙니다. TextRenderer를 사용하여 텍스트를 그립니다. –

답변

2

나는 성공적으로 원하는 높이로 더미 이미지로 이미지 목록을 지정하여 목록보기의 높이를 조정합니다.

예. 각 40 픽셀 높이의 행을 가지려면 이미지 목록의 목록보기에 40 픽셀 높이의 이미지를 지정합니다.

이미지를 실제로 그릴 필요는 없으며, 이미지를 지정하고 소유자가 그리기 만하면됩니다. 예를 들어 this screenshot의 배경에있는 목록 (.NET에 쓴 CMS입니다).

+0

나는 imagelist를 시도하고 작동한다. 문제는 이미지리스트의 원래 크기 (높이)를 유지한다는 것입니다. 내가 imagelist의 크기를 변경하면 항목의 크기가 변경되지 않습니다. itemList의 새로운 크기로 항목 크기를 업데이트하는 방법을 알고 있습니까? –

+0

글쎄, 아이템의 원하는 높이로 메모리 내장 이미지를 추가합니다. 예 : 1px x 40px의 빈 이미지를 만들어 이미지 목록에 추가합니다. 그러면 완전히 다른 이미지 목록의 목록에서 실제로 표시되도록 이미지를 가져옵니다. –

-2

당신이 옳습니다.

실제로 ImageList의 ImageSize 속성을 변경하면 ImageList가 비어있는 것을 볼 수 있습니다. 그래서 당신의 문제 ImageSize를 다시 원하는 ImageList를 다시 채워 넣어야합니다. 그것을 시도하여 문제를 해결할 수 있습니다.