none
Panel的AutoScroll控制的問題 RRS feed

  • 問題

  • 您好

          當Panel 屬性AutoScroll設為True時,隨便一個物件(例如PictureBox)超過Panel的大小時會自動

    出現HorizontalScroll及VerticalScroll,可是若想要直接設定HorizontalScroll 和 VerticalScroll 的

    Maximum的值卻無法設定,也無法當Panel顯示時,直接秀出HorizontalScroll 和 VerticalScroll 一

    定得超過Panel的大小時才能自動顯現無法控制。

     

          想請教各位有辦法改寫Panel中的AutoScroll這個屬性嗎?使得Panel一顯現直接顯示出來,並

    可以直接設定其Maximum

     

     

     

    ------------------------------------------------

    若能撥冗回覆感激不盡~~~~

    Take Care All,

    Fang

    2007年8月6日 下午 02:43

解答

  • 那就不要用 AutoScroll ,自己在Panel 旁邊拉 Scroll ,調整 Panel 大小及 Location 。

     

    以前沒有 AutoScroll 時,都是這樣做的。

    2007年8月6日 下午 03:25
    版主

所有回覆

  • 那就不要用 AutoScroll ,自己在Panel 旁邊拉 Scroll ,調整 Panel 大小及 Location 。

     

    以前沒有 AutoScroll 時,都是這樣做的。

    2007年8月6日 下午 03:25
    版主
  • Dear Sir

    您可以用程式的方式自行加上Scroll Bar,不過要自行維護的部分比較多,您可以參考下面程式碼

    Code Snippet

    Dim WithEvents VS As VScrollBar

    Dim WithEvents HS As HScrollBar

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            VS = New VScrollBar

            HS = New HScrollBar

            VS.Dock = DockStyle.Right

            VS.Maximum = 10

            HS.Dock = DockStyle.Bottom

            HS.Maximum = 10

            Me.Panel1.Controls.Add(VS)

            Me.Panel1.Controls.Add(HS)

    End Sub

    Private Sub VS_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VS.Scroll

            ''處理Scroll 事件

    End Sub

    Private Sub HS_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HS.Scroll

            ''處理Scroll 事件

    End Sub

     

     

     

    2007年8月6日 下午 03:28
    版主
  • 真的誠心感謝大家的回覆ㄚ!

             可否再請教一個問題,那要如何使用ScrollBar順利的控制Panel目前可視的範圍呢?我看著MSDN及上面的範例有先用Bitmap試做一遍,利用重繪的方式來控制目前可視的範圍,程式如次:

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

    Dim Buffer As New Bitmap(1000,1200)

    Dim hslBar As New HScrollBar

    Dim vslBar As New VScrollBar

     

    ' Painting Event

    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _

     Handles Me.Paint

            Dim g As Graphics = e.Graphics
            Dim oRec As New Rectangle(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
            Dim cRec As New Rectangle(Me.hslBar.Value, Me.vslBar.Value, Me.ClientSize.Width, Me.ClientSize.Height) _
            g.DrawImage(Buffer, oRec, cRec, GraphicsUnit.Pixel)


        End Sub

     

    ' Scroll移動事件

    Private Sub vslBar_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) _   Handles vslBar.Scroll


                 Me.Refresh()


    End Sub

     

    Private Sub hslBar_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) _  Handles hslBar.Scroll
      

    Me.Refresh()

    'End Sub

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

    那如果換做是Panel要如何使用ScrollBar控制呢?

    2007年8月7日 上午 07:22
  • 不是有寫嗎:「調整 Panel 大小及 Location 」

    注意:Panel 不能設定 Dock 屬性,否則 Location 將無作用。

    2007年8月7日 上午 07:27
    版主
  • 謝了Dear All

    搞了好一下終於搞懂了!感謝大家ㄚ!

     

    2007年8月7日 上午 10:10