2011年11月4日 星期五

#VB 滑鼠控制畫面移動


應該要去計算一個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




沒有留言:

張貼留言