0

我正在尝试使用 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:如果您删除多行文本框并使用相同的代码,它可以工作......

4

1 回答 1

1

SB_VERT用于垂直滚动条,作为窗口非客户区的一部分。对于滚动条控件,使用SB_CTL常量。

于 2013-01-11T20:45:43.827 回答