我正在尝试使用 EnableScrollBar api 禁用 VScrollBar 控件。当我调用 api 时,它返回好像没有问题,但 VScrollBar 没有重新绘制。
要重现此问题,请创建一个 Vb.Net windows 窗体项目,将一个 VScrollBar 控件和一个按钮拖放到窗体并粘贴以下代码:
<DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True, ExactSpelling:=True)>
Public Shared Function EnableScrollBar(ByVal hWnd As IntPtr, ByVal nBar As Integer, ByVal value As Integer) As Boolean
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim wSBflags As UInteger = 3UI 'SB_VERT
Dim wArrows As UInteger = 3UI 'ESB_DISABLE_BOTH
Dim result As Boolean = EnableScrollBar(Me.VScrollBar1.Handle, wSBflags, wArrows)
End Sub
我尝试使用 SendMessage 发送重绘(WM_REDRAW)和绘画(WM_PAINT),但无法让它工作。有什么想法吗?
Ps:如果您删除多行文本框并使用相同的代码,它可以工作......