【问题标题】:Vertical ScrollBar does not repaint using EnableScrollBar api垂直滚动条不使用 EnableScrollBar api 重新绘制
【发布时间】:2012-12-26 12:11:25
【问题描述】:

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

【问题讨论】:

    标签: vb.net winforms winapi interop


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2014-09-21
      • 2013-11-05
      • 1970-01-01
      相关资源
      最近更新 更多