酷!學園

技術討論區 => 程式討論版 => .NET程式設計討論區 => 主題作者是: 阿顯 於 2010-11-05 00:18

主題: listview捲動有殘影
作者: 阿顯2010-11-05 00:18
目前使用vb2005開發程式,使用listview當資料筆數多時會自動產生scrollbar,這時如點選了scrollbar上或下的按鈕,
這時listview的畫面會產生殘影現像,原本想將refiash寫在scrollbar事件上沒想到listview沒scrollbar事件[如圖],不知各位
大大有遇過此情況嗎。
(http://alg8kw.bay.livefilestore.com/y1pG8grIx7OsDDByeOQPQT9rg8j1HJtRHQ8lQM6T-5wBvqBkrh0E0VebahWWjKrPdOVCsHsSD7PeUU5S3PERymKb-9kr51TOOyA/listview.JPG?psid=1)
主題: 回覆: listview捲動有殘影
作者: 洋蔥叔叔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 事件就好了
主題: 回覆: listview捲動有殘影
作者: 阿顯2010-11-05 16:13
該程式目前己在使用中,其它台電腦也一樣,但是我用listview1.reflash可以解決,無法在點上下捲軸時一直用reflash,

在請教一下大大你寫的這程式我複製進去,要如何引用才知道那一個listview上的scrollbar。因為這個scrollbar是listview內建的應該如何使用
主題: 回覆: listview捲動有殘影
作者: 洋蔥叔叔2010-11-05 18:53
你要把原來的 ListView 控制項改成上面的 MyListView
主題: 回覆: listview捲動有殘影
作者: 阿顯2010-11-06 09:24
不好意思自己學藝不精,是將ListView控制項名稱改成上面的 MyListView或是可否改和控制項名稱一樣,這程式是一個事件嗎?
因為我改完程式就有了錯誤以下是錯誤訊息
"錯誤   1   'ListView5' 已經在此 class 中宣告為 'Friend Dim WithEvents ListView5 As System.Windows.Forms.ListView'了。   D:\hdwn\Form1.vb"
主題: 回覆: listview捲動有殘影
作者: 洋蔥叔叔2010-11-06 10:18
不是,你要把所有參考到 System.Windows.Forms.ListView 的地方用 MyListView 取代
MyListView 是繼承 ListView 的一個新類別
主題: 回覆: listview捲動有殘影
作者: 阿顯2010-11-06 11:22
最後做反覆測試發現listview的屬性Gridlines設為True,該屬性為listview的線格能幫助使用者在詳細資料閱讀更清楚看出每一筆資料。
不是此題是否有解