我有一個DataGridView,不斷被反彈到一個數據源..每秒一次。由於DGV的工作原理,我必須在每次刷新期間手動記錄並重置滾動位置,排序列和選定行。所有這一切工作正常。但是,單擊並拖動滾動條時,重新綁定數據會停止滾動。例如,如果我處於DGV的頂部,並且我開始向下滾動到底部,那麼在它自行停止滾動之前,我可能只能向下滾動1/2。綁定到數據源時向下滾動DataGridView控件導致用戶滾動停止。我怎樣才能避免這種情況?
任何想法?
我有一個DataGridView,不斷被反彈到一個數據源..每秒一次。由於DGV的工作原理,我必須在每次刷新期間手動記錄並重置滾動位置,排序列和選定行。所有這一切工作正常。但是,單擊並拖動滾動條時,重新綁定數據會停止滾動。例如,如果我處於DGV的頂部,並且我開始向下滾動到底部,那麼在它自行停止滾動之前,我可能只能向下滾動1/2。綁定到數據源時向下滾動DataGridView控件導致用戶滾動停止。我怎樣才能避免這種情況?
任何想法?
請看看this(現在的問題是數據網格,但得到的答覆是兩個數據網格/ DataGridView中)
其實你不與滾動條直接交互,而您設置的FirstDisplayedScrollingRowIndex。因此,在重新加載之前,捕獲該索引,一旦重新加載,將其重置爲該索引。 來源:Anurag Ranjhan
希望這有助於!玩得開心
基於您的評論,或許這可能幫助。試試這個...
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
在刷新時嘗試模擬鼠標左鍵單擊您當前的位置。 (最多會取消狀態......這可能是一個很好的測試)
mouse_event(&H2, 0, 0, 0, 0) 'down
mouse_event(&H4, 0, 0, 0, 0) 'up
你可能會比布爾玩這個,並把它重新拖狀態。請記住添加對System.Runtime.InteropServices的引用
我已經有這部分覆蓋。當我點擊並拖動滾動條時,它會變成「附加」到我的鼠標光標上。當DGV刷新時,它會「分離」,因此我的滾動被中斷。 – user1003916 2013-02-20 15:53:25
我自己找到了答案。 http://stackoverflow.com/a/767603/1003916 – user1003916 2013-02-20 16:10:15