應該要去計算一個Row的高度
當滑鼠移動便量超過一個row的高度
上下推移一個Row的變量
以一個Row的高度作為基準點
持續推移力度
透過滑鼠下壓,抓住該FirstDisplayRowIndex
推移中,直到放開時,抓住放開時FirstDisplayRowIndex
兩者相互比較,
1. 計算移動量後
2. 計算 ( 1+ (移動量 / 4 ) ) * (移動量 / 4) / 2 作為推移力度
1 => 0
2 => 0
3 => 1
4 => 1
5 => 1
6 => 2
還可以
============================================
DataGridView重新绑定时保持上次滚动位置
VB.Net 动态添加和移除事件
目前推動力度以
row 的差值 去取 mod
====================================================
目前想法是
1. 透過mouse down 抓按下座標
2. mouse move滑鼠移動,且持續按下
計算移動量,去設定scroll bar的移動量
3. mouse up 放開滑鼠,停下scroll bar
可能要再計算放開後座標,與按下座標差距
繼續推移一定距離,造成推動力度的效果
'目前是每次移動一個Y,gridview跟著位移一個 row
If keep = 1 And e.Button = Windows.Forms.MouseButtons.Left Then
'測試 Y - Y 推移距離
Dim mDir = e.Y - mDown.Y
If mDir >= 0 Then
If Me.FirstDisplayedScrollingRowIndex + 1 < Me.Rows.Count - 1 Then
'向下推移
Me.FirstDisplayedScrollingRowIndex += 1
End If
Else
If Me.FirstDisplayedScrollingRowIndex - 1 > 0 Then
'向上推移
Me.FirstDisplayedScrollingRowIndex -= 1
End If
End If
End If
@持續推移的方式不好,感覺不出來
應該要改變計算力度的方式
'測試 Y - Y 持續推移,模擬推動力度
Dim mDir = mUp.Y - mDown.Y
Dim mMove = Me.FirstDisplayedScrollingRowIndex - rDown
If mMove >= 0 Then
If Me.FirstDisplayedScrollingRowIndex + mMove < Me.Rows.Count - 1 Then
'向下推移
Me.FirstDisplayedScrollingRowIndex += mMove
End If
Else
If Me.FirstDisplayedScrollingRowIndex + mMove > 0 Then
'向上推移
Me.FirstDisplayedScrollingRowIndex += mMove
End If
End If
目前透過 按下的 row index
配合推移停止後所抓到的第一個 row
來判斷推動力度
@可能需要判斷推動距離大於某個數值
直接到底層或是上層
'直達方式要改
'有點怪怪的,可能推動放開後也要改
========================================
Scrolling the image by dragging the mouse
如何控制datagridview控件的鼠标滚动行数
http://dotnet.wgets.com/thread/175001
How do I make the TreeView scroll when I drag an item to the top or bottom?
http://www.syncfusion.com/faq/windowsforms/faq_c91c.aspx#q906q
沒有留言:
張貼留言