Windowsタッチ操作でグリッドをスクロールしたときに最後が隠れる
——————————-
この現象は、DataGridView コントロールにおける不具合によって必要なメッセージが送信されないため、表示領域とコントロールの座標との整合性が取れなくなり発生します。タッチ操作に起因するので、マウスによるスクロールでは発生しません。
———————————————————————————-
例によってバグですが修正するのかしないのか?
重要なバグだと思うんだけど、
回避方法は上記に乗っているがC#の例なのでVBに書き換え
Private Const WM_VSCROLL As Integer = &H115
Private Const SB_THUMBPOSITION As Integer = &H4
Private Const SB_THUMBTRACK As Integer = &H5
<System.Runtime.InteropServices.DllImport("user32")>
Private Shared Function PostMessage(hWnd As IntPtr, Msg As Integer, wParam As IntPtr, lParam As IntPtr) As Integer
End Function
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_VSCROLL Then
If Me.LoWord(CLng(m.WParam)) = Me.LoWord(CLng(SB_THUMBPOSITION)) Then
MyBase.BeginInvoke(New Action(Of IntPtr, IntPtr)(Sub(WParam As IntPtr, LParam As IntPtr)
Dim testWParam As IntPtr = New IntPtr(5)
PostMessage(MyBase.Handle, 277, testWParam, LParam)
End Sub), New Object() {m.WParam, m.LParam})
End If
End If
End Sub
Protected Function LoWord(input As Long) As Short
Return CShort((CInt(input) And 65535))
End Function