首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

怎么获取Panel控件滚动条的取值范围,小弟我发现拉到最上面时是负数

2012-12-18 
如何获取Panel控件滚动条的取值范围,我发现拉到最下面时是负数本帖最后由 gzw1000 于 2012-11-20 21:31:19

如何获取Panel控件滚动条的取值范围,我发现拉到最下面时是负数
本帖最后由 gzw1000 于 2012-11-20 21:31:19 编辑 Panel里放了一个PictureBox想实现用鼠标拖动看图片,想要用代码控制滚动条的位置
Vb.net 里Panel没有VerticalScroll这个对象
[最优解释]
想让panel滚动,设置AutoScroll属性设置为 true,然后设置 Panel1.AutoScrollMinSize 为需要大小。panel就可以自动滚动了。要获取当前滚动位置Panel1.AutoScrollPosition 但这个位置是表示可滚动控件显示框的位置。负值表示远离原点方向滚动。详见msdn解释ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system.windows.forms/html/933ee0ee-a537-edb0-653b-c0c8980b7aae.htm

下面给你一个 演示代码,需要一个按钮,一个panel ,一个picturebox 自己拖放到位置。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize '设置picturebox为图像大小
        PictureBox1.Location = New Point(0, 0)
        Panel1.AutoScroll = True '启动滚动
    End Sub
    '加载图片
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dlg As New OpenFileDialog
        With dlg
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                Try
                    PictureBox1.Image = Image.FromFile(.FileName) '加载图片
                    Panel1.AutoScrollMinSize = PictureBox1.Size '设置滚动范围

                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try

            End If
        End With
    End Sub


    Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

    End Sub

    Private Sub Panel1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles Panel1.Scroll
        Me.Text = String.Format("演示picturebox滚动及滚到当前位置:{0}", New Point(0, 0) - Panel1.AutoScrollPosition)
    End Sub
End Class



已经测试,如果楼主看得行,就给50分奖励下吧
[其他解释]
嗯,顺道说一下,
panel是继承自ScrollableControl控件,这个控件本身自己简单的自动滚动。就是说系统帮你滚动了。你只要设置好AutoScrollMinSize属性就好了。其他不老操心。
panel是有 Panel1.VerticalScroll 这个属性的。这个也是指示滚动的相关信息的。但自己感觉不如AutoScrollPosition方便。
另外vb也有滚动控件HScrollBar 控件和 VScrollBar 控件 ,当然也可以用这两控件实现滚动。

热点排行