2010-11-29 24 views
7

下面是使用LargeIconsListView文本被截斷 - 如何顯示項目的整個文本?

alt text

一個一個System.Windows.Forms.ListView的圖像選擇的項目顯示了所有它的文本

例如左上角的項目只顯示其名稱的11個字符,如果已選中,則會完全顯示。如何讓它顯示所有文字(或至少11個以上的字符),對於未選中的項目?

+2

你可能不得不去自畫......這是標準的行爲,即使是在Windows資源管理器。 – 2010-11-30 04:39:00

+0

當我在Explorer(win-7)中設置LargeIcon視圖時,這不會發生。文件名,甚至是非常長的文件名都會顯示出來。 – Anonym 2010-11-30 09:20:15

回答

0

前段時間我遇到了這個問題,並且在x個字符之後和/或大寫字母之前插入一個空格來解決問題,所以文本被包裹在我想要的地方。這有點黑客,但它是一個簡單的修復。您當然需要跟蹤您對文本所做的更改,以便在用戶選擇該項目以供進一步使用時將其反轉。

2

有DrawItem事件http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.drawitem.aspx。在這個事件中你可以訪問System.Drawing.Graphics.DrawString方法。

void view_DrawItem(object sender, DrawListViewItemEventArgs e) 
    { 
     e.Graphics.DrawString(e.Item.Text, drawFont, Brushes.Black, 
      new RectangleF(e.Item.Position.X, 
       e.Item.Position.Y, 
       20, 
       160)); 

    } 

我輸入了一些寬/高的值,但是你應該使用MeasureString或類似的方法。 另外不要忘記在ListView上設置OwnerDraw = true,否則它將無法工作。

0

警告:這對我來說當查看類型是詳情,我還沒有嘗試LargeIcons。

寫入輸出後(我的是散裝)到ListView添加以下內容:

lstResults.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.HeaderSize); 
lstResults.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);