I want to set limit scrolling to a scrollable panel

前端 未结 2 787
[愿得一人]
[愿得一人] 2021-01-21 22:37

I made a scrollable panel like this:

private void button3_Click(object sender, EventArgs e)
{
    Form f2 = new Form();
    f2.Size = new Size(400, 300);
    f2.         


        
2条回答
  •  悲哀的现实
    2021-01-21 23:11

    We can Get or set the upper limit of values of the scrollable range with

    ScrollBar.Maximum Property

    An example is as follows.

    The following example assumes that you have created a Form, added a PictureBox to the Form, and added a horizontal HScrollBar and a vertical VScrollBar to the PictureBox. This code example is part of a larger example provided for the ScrollBar class overview. In this example, the Maximum property is set to the size of the Image plus the size of the scrollbar if it is visible plus an adjustment factor of the size of the LargeChange property. You must add references to the System.Drawing and System.Windows.Forms namespaces to run this example.

    public void SetScrollBarValues()
        {
            //Set the following scrollbar properties:
    
            //Minimum: Set to 0
    
            //SmallChange and LargeChange: Per UI guidelines, these must be set
            //    relative to the size of the view that the user sees, not to
            //    the total size including the unseen part.  In this example,
            //    these must be set relative to the picture box, not to the image.
    
            //Maximum: Calculate in steps:
            //Step 1: The maximum to scroll is the size of the unseen part.
            //Step 2: Add the size of visible scrollbars if necessary.
            //Step 3: Add an adjustment factor of ScrollBar.LargeChange.
    
    
            //Configure the horizontal scrollbar
            //---------------------------------------------
            if (this.hScrollBar1.Visible)
            {
                this.hScrollBar1.Minimum = 0;
                this.hScrollBar1.SmallChange = this.pictureBox1.Width / 20;
                this.hScrollBar1.LargeChange = this.pictureBox1.Width / 10;
    
                this.hScrollBar1.Maximum = this.pictureBox1.Image.Size.Width - pictureBox1.ClientSize.Width;  //step 1
    
                if (this.vScrollBar1.Visible) //step 2
                {
                    this.hScrollBar1.Maximum += this.vScrollBar1.Width;
                }
    
                this.hScrollBar1.Maximum += this.hScrollBar1.LargeChange; //step 3
            }
    
            //Configure the vertical scrollbar
            //---------------------------------------------
            if (this.vScrollBar1.Visible)
            {
                this.vScrollBar1.Minimum = 0;
                this.vScrollBar1.SmallChange = this.pictureBox1.Height / 20;
                this.vScrollBar1.LargeChange = this.pictureBox1.Height / 10;
    
                this.vScrollBar1.Maximum = this.pictureBox1.Image.Size.Height - pictureBox1.ClientSize.Height; //step 1
    
                if (this.hScrollBar1.Visible) //step 2
                {
                    this.vScrollBar1.Maximum += this.hScrollBar1.Height;
                }
    
                this.vScrollBar1.Maximum += this.vScrollBar1.LargeChange; //step 3
            }
        }
    

    Hope you can change the code accordingly to set the maximum scrollable space.:)

提交回复
热议问题