none
vb.net 2010 ListView 字體變點點點 RRS feed

  • 問題

  • 請問我的 ListView 在大圖示顯示狀態下 字體是 12 可是有的字會變成 點點點

    例如 我的私人管理工具 會變成 我的私人...

    請問這該如何解決呢

    我圖片是 60*60 的 ....


    0.0
    2011年1月17日 下午 07:53

解答

  • 請改成處理DrawSubItem屬性和DrawColumnHeader事件, 應該就OK了, 例如:

    Private Sub ListView1_DrawSubItem(ByVal sender As Object, ByVal e As DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem        
                If e.ColumnIndex = 空間不足的欄位的欄位編號 Then
                    e.Graphics.DrawString(e.SubItem.Text, ListView1.Font, Brushes.Black, _
       new RectangleF(e.SubItem.Bounds.X, e.SubItem.Bounds.Y, 160, 20))         
                Else
                    e.DrawDefault = True
                End If
    End Sub

    Private Sub ListView1_DrawColumnHeader(ByVal sender As Object, ByVal e As DrawListViewColumnHeaderEventArgs) Handles ListView1_DrawColumnHeader
                e.DrawDefault = True
    End Sub

    2011年1月21日 下午 01:40

所有回覆

  • 您可以將ListView改成OwnerDraw模式, 再製作DrawItem事件, 自行輸出文字, 請參考:

    ListView text is truncated — how do I display the entire text of an item?

    2011年1月18日 上午 01:47
  • 有點看不懂 實作也怪怪的

    他的問題 C#下 我套用在VB.NET 中不會用

    可否指點迷津??


    0.0
    2011年1月18日 下午 04:59
  • VB.NET製作DrawItem事件處理程序的範例可以參考:ListView.DrawItem Event
    2011年1月19日 上午 01:18
  • 我還是做不出來....

    可以跟我說要怎麼解決嗎??

    我的LISTVIEW 是用程式碼加入的 程式如下

    Dim L1 As New ListViewItem("這是第一張圖" & vbLf & "圖片說明" & 圖片編號)
    L1.Font = New Font("新細明體", 10)
    L1.Name = "圖片1"

    listview1.Items.AddRange(New System.Windows.Forms.ListViewItem() {L1})


    0.0
    2011年1月19日 下午 03:24
  • 您有設定ListView的OwnerDraw屬性並製作DrawItem事件處理程序嗎?

    2011年1月20日 上午 02:02
  • 設定ListView的OwnerDraw屬性並製作DrawItem事件處理程序

    我有設定 OD 屬性 true 了

    後面這個DrawItem事件處理程序 不懂得怎麼用 ....

    是把我要加入的程式碼 加在這裡面嗎


    0.0
    2011年1月20日 上午 07:44
  • 可以參考之前的連結提供的範例中DrawItem事件處理程序的寫法
    2011年1月21日 上午 02:22
  • Private Sub view_DrawItem(sender As Object, e As DrawListViewItemEventArgs)
    	e.Graphics.DrawString(e.Item.Text, drawFont, Brushes.Black, New RectangleF(e.Item.Position.X, e.Item.Position.Y, 20, 160))
    End Sub
    
    然後要怎麼做呢 我試不出來 ....

    0.0
    2011年1月21日 上午 06:25
  • 請改成處理DrawSubItem屬性和DrawColumnHeader事件, 應該就OK了, 例如:

    Private Sub ListView1_DrawSubItem(ByVal sender As Object, ByVal e As DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem        
                If e.ColumnIndex = 空間不足的欄位的欄位編號 Then
                    e.Graphics.DrawString(e.SubItem.Text, ListView1.Font, Brushes.Black, _
       new RectangleF(e.SubItem.Bounds.X, e.SubItem.Bounds.Y, 160, 20))         
                Else
                    e.DrawDefault = True
                End If
    End Sub

    Private Sub ListView1_DrawColumnHeader(ByVal sender As Object, ByVal e As DrawListViewColumnHeaderEventArgs) Handles ListView1_DrawColumnHeader
                e.DrawDefault = True
    End Sub

    2011年1月21日 下午 01:40
  • 我是用 LAGER 大圖示的

    我試了一下 發現我利用程式碼新增的資料 初步來 可能我有做錯的地方

    在請教一下

    空間不足的欄位的欄位編號 是指我變點點點的位置嗎??

    另外冒昧請教一下 選OwnerDraw 之後 再利用您的程式碼 可以達到顯示全部的效果嗎 QQ?

    試了兩三天  有點難搞 ˊˋ


    0.0
    2011年1月21日 下午 10:01
  • 空間不足的欄位的欄位編號指的是變點點點的欄位的編號, 記得將DrawItem事件處理程序刪除
    2011年1月22日 上午 02:01
  • 感謝 THIS 大大 幫忙

    我還是弄不出來 圖片會不見 ...

    可否用個簡單範力幫助 >"<


    0.0
    2011年1月22日 下午 01:22
  • 您可以先切到[詳細資料]模式看是否正常, 如果正常, 表示程式沒有問題, 在[大型圖示]模式, 您可以先在DrawItem事件處理程序加入:

    e.DrawDefault = True

    看是否可以解決?

    2011年1月23日 上午 03:44
  • THIS 大大

    我的LISTVIEW 都是點點點

    那這樣怎麼處理呢

    也就是全部都因為字太長都變點點點了 ....


    0.0
    2011年1月27日 下午 05:32
  • 在詳細資料模式下顯示是否正常?
    2011年1月28日 上午 03:57
  • 有考慮用 ToolTip 嗎?


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年2月4日 下午 02:37