我正在尝试创建一个自定义UI元素:一个面板,源自原始的面板,可以使用特殊滚动条(不是集成的滚动条)滚动,并具有一些其他特殊功能。
实际问题是滚动。当我更改自定义滚动条的值(例如滚动)时,面板集成的滚动条会突然显示,尽管autoScroll = false。 导致非预期状态,两个滚动条都可见,集成和我的自定义。
Private Sub ScrollB_EvValueChanged(NewVal As Integer) Handles ScrollB.EvValueChanged
Me.CleanPanel1.VerticalScroll.Value = NewVal
End Sub
如何将自定义滚动条确定的新滚动位置(新偏移量)分配到面板,而不显示面板集成的滚动条?
遗憾的是,面板(或用户控件)上面有另一个面板并且使用内部面板的.Top和.Left属性来模拟滚动在我的情况下不适合。
感谢您的所有提示!
答案 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