VB.NET面板滚动没有显示滚动条

时间:2014-09-14 14:06:22

标签: vb.net scroll element panel manual

我正在尝试创建一个自定义UI元素:一个面板,源自原始的面板,可以使用特殊滚动条(不是集成的滚动条)滚动,并具有一些其他特殊功能。

实际问题是滚动。当我更改自定义滚动条的值(例如滚动)时,面板集成的滚动条会突然显示,尽管autoScroll = false。 导致非预期状态,两个滚动条都可见,集成和我的自定义。

Private Sub ScrollB_EvValueChanged(NewVal As Integer) Handles ScrollB.EvValueChanged
    Me.CleanPanel1.VerticalScroll.Value = NewVal
End Sub

如何将自定义滚动条确定的新滚动位置(新偏移量)分配到面板,而不显示面板集成的滚动条?

遗憾的是,面板(或用户控件)上面有另一个面板并且使用内部面板的.Top和.Left属性来模拟滚动在我的情况下不适合。

感谢您的所有提示!

1 个答案:

答案 0 :(得分:0)

'我一直在寻找实现此目的的方法,大多数方法都比需要的复杂得多,或者您必须编写一个完整的dang程序来删除滚动条。无论如何,这是一种快速,有效,整洁的方法(由于找不到任何东西,我将其发布。     'e.delta检测到鼠标滚轮刻度,如果大于0,则向上滚动,小于0则向下滚动。 '-91部分扣除了一些面板悬伸(根据需要进行调整) ``我在这个项目中有50个高的按钮,所以这对我来说滚动得很好。 如果没有边界,则嵌套的if语句(没有其他代码)告诉程序停止。滚动时,面板的底部不会“停止”(当面板的底部以某种方式悬挂在表格的底部时)到达表格的底部,可以通过更改700来进行调整常数。

Private Sub DaddyPanel_MouseWheel(sender As Object, e As MouseEventArgs) Handles DaddyPanel.MouseWheel

        If e.Delta < 0 Then
            If (-DaddyPanel.Height - 91) > (DaddyPanel.Location.Y - 700) Then
            Else
                TextBox1.Text = DaddyPanel.Height & " " & DaddyPanel.Location.Y
                DaddyPanel.Location = DaddyPanel.Location + New Point(0, -50)
            End If

        Else
                If DaddyPanel.Location = New Point(0, 0) Then
            Else
                DaddyPanel.Location = DaddyPanel.Location + New Point(0, 50)
            End If
        End If
    End Sub