作者 主題: listview捲動有殘影  (閱讀 6862 次)

0 會員 與 1 訪客 正在閱讀本文。

阿顯

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
listview捲動有殘影
« 於: 2010-11-05 00:18 »
目前使用vb2005開發程式,使用listview當資料筆數多時會自動產生scrollbar,這時如點選了scrollbar上或下的按鈕,
這時listview的畫面會產生殘影現像,原本想將refiash寫在scrollbar事件上沒想到listview沒scrollbar事件[如圖],不知各位
大大有遇過此情況嗎。

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: listview捲動有殘影
« 回覆 #1 於: 2010-11-05 12:07 »
不大確定,可能跟顯示卡驅動也有關係,但如果硬是要抓 Scollbar 的事件的話,可以做 subclass

代碼: [選擇]
Public Class MyListView
    Inherits ListView

    Public Event Scrolled()

    Private Const WM_VSCROLL = &H115

    Public Sub New()
        Me.DoubleBuffered = True ' 順便試試看有沒有幫助,沒有的話就刪掉
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case WM_VSCROLL
                RaiseEvent Scrolled()
        End Select
        MyBase.WndProc(m)
    End Sub
End Class


然後再抓 MyListView 的 Scrolled 事件就好了

阿顯

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: listview捲動有殘影
« 回覆 #2 於: 2010-11-05 16:13 »
該程式目前己在使用中,其它台電腦也一樣,但是我用listview1.reflash可以解決,無法在點上下捲軸時一直用reflash,

在請教一下大大你寫的這程式我複製進去,要如何引用才知道那一個listview上的scrollbar。因為這個scrollbar是listview內建的應該如何使用

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: listview捲動有殘影
« 回覆 #3 於: 2010-11-05 18:53 »
你要把原來的 ListView 控制項改成上面的 MyListView

阿顯

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: listview捲動有殘影
« 回覆 #4 於: 2010-11-06 09:24 »
不好意思自己學藝不精,是將ListView控制項名稱改成上面的 MyListView或是可否改和控制項名稱一樣,這程式是一個事件嗎?
因為我改完程式就有了錯誤以下是錯誤訊息
"錯誤   1   'ListView5' 已經在此 class 中宣告為 'Friend Dim WithEvents ListView5 As System.Windows.Forms.ListView'了。   D:\hdwn\Form1.vb"

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
回覆: listview捲動有殘影
« 回覆 #5 於: 2010-11-06 10:18 »
不是,你要把所有參考到 System.Windows.Forms.ListView 的地方用 MyListView 取代
MyListView 是繼承 ListView 的一個新類別

阿顯

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: listview捲動有殘影
« 回覆 #6 於: 2010-11-06 11:22 »
最後做反覆測試發現listview的屬性Gridlines設為True,該屬性為listview的線格能幫助使用者在詳細資料閱讀更清楚看出每一筆資料。
不是此題是否有解