Csharp/C Sharp/GUI Windows Form/ScrollBar

Материал из .Net Framework эксперт
Версия от 11:32, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

ScrollBars Demo

/*
Professional Windows GUI Programming Using C#
by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury, 
   Zach Greenvoss, Shripad Kulkarni, Neil Whitlow
Publisher: Peer Information
ISBN: 1861007663
*/
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
namespace ScrollBars
{
    /// <summary>
    /// Summary description for ScrollBars.
    /// </summary>
    public class ScrollBars : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.VScrollBar vScrollBar1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        int counter=0;
        private System.Windows.Forms.Label label1;
        private System.ruponentModel.Container components = null;
        public ScrollBars()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
            this.label1 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // textBox1
            // 
            this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.textBox1.ForeColor = System.Drawing.Color.Transparent;
            this.textBox1.Location = new System.Drawing.Point(24, 56);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.ReadOnly = true;
            this.textBox1.Size = new System.Drawing.Size(144, 32);
            this.textBox1.TabIndex = 4;
            this.textBox1.Text = "";
            this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            // 
            // vScrollBar1
            // 
            this.vScrollBar1.Location = new System.Drawing.Point(168, 56);
            this.vScrollBar1.Name = "vScrollBar1";
            this.vScrollBar1.Size = new System.Drawing.Size(16, 32);
            this.vScrollBar1.TabIndex = 7;
            this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll);
            // 
            // label1
            // 
            this.label1.Location = new System.Drawing.Point(8, 16);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(192, 16);
            this.label1.TabIndex = 6;
            this.label1.Text = "Numeric Scolling using VScroll Bars";
            // 
            // ScrollBars
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(208, 109);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.label1,
                                                                          this.vScrollBar1,
                                                                          this.textBox1});
            this.Name = "ScrollBars";
            this.Text = "Numeric Scroll";
            this.Load += new System.EventHandler(this.ScrollBars_Load);
            this.ResumeLayout(false);
        }
        #endregion
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new ScrollBars());
        }
        private void textBox1_TextChanged(object sender, System.EventArgs e)
        {
        }
        private void ScrollBars_Load(object sender, System.EventArgs e)
        {
            // Set the maximum range for the scrollbar
            vScrollBar1.Maximum = 100;
            // Set the minimum range for the scrollbar
            vScrollBar1.Minimum = 0 ; 
            // Set the SmallChange factor
            vScrollBar1.SmallChange = 1;    
        }
        private void vScrollBar1_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
        {
            // Check if the increment is Small 
         if ( e.Type == ScrollEventType.Last ) 
            counter = 100  ; 
         else
            // Check if the scroll is moved to minimum pos
            if ( e.Type == ScrollEventType.First) 
            counter = 0  ; 
         else
            // Check if the scroll is moved small distance
            if ( e.Type == ScrollEventType.SmallDecrement ) 
            counter -- ; 
         else
            // Check if the scroll is moved small distance
            if ( e.Type == ScrollEventType.SmallIncrement )
         {
            counter++;
            MessageBox.Show("Small increment");
         }
         else
            // Check if the scroll is moved large distance
            if ( e.Type == ScrollEventType.LargeDecrement ) 
            counter-=5;
         else
            // Check if the scroll is moved large distance
            if ( e.Type == ScrollEventType.LargeIncrement )
         {
            MessageBox.Show("Large increment");
            counter+=5;
         }
         else
            // Check if the scroll is moved to the Min position
            if ( e.Type == ScrollEventType.First ) 
            counter = 0 ; 
         else
            // Check if the scroll to the Max position
            if ( e.Type == ScrollEventType.Last) 
            counter = 100  ; 
        Console.WriteLine(e.NewValue+"\n");
        // Check if the scroll is moved large distance
            if ( counter > 100 ) counter = 100 ; 
            if ( counter < 0 ) counter = 0 ;
            textBox1.Text = counter.ToString() ;
        }
    }
}


Scroll event

 
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class Form1 : System.Windows.Forms.Form {
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.VScrollBar vScrollBar1;
    int counter = 0;
    private System.Windows.Forms.Label label1;
    public Form1() {
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
        this.label1 = new System.Windows.Forms.Label();
        this.SuspendLayout();
        this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
        this.textBox1.ForeColor = System.Drawing.Color.Transparent;
        this.textBox1.Location = new System.Drawing.Point(24, 56);
        this.textBox1.Multiline = true;
        this.textBox1.ReadOnly = true;
        this.textBox1.Size = new System.Drawing.Size(144, 32);
        this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
        this.vScrollBar1.Location = new System.Drawing.Point(168, 56);
        this.vScrollBar1.Size = new System.Drawing.Size(16, 32);
        this.vScrollBar1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.vScrollBar1_Scroll);
        this.label1.Location = new System.Drawing.Point(8, 16);
        this.label1.Size = new System.Drawing.Size(192, 16);
        this.label1.Text = "Numeric Scolling using VScroll Bars";
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(208, 109);
        this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                      this.label1,
                                      this.vScrollBar1,
                                      this.textBox1});
        this.Text = "Numeric Scroll";
        this.Load += new System.EventHandler(this.Form1_Load);
        this.ResumeLayout(false);
    }
    [STAThread]
    static void Main() {
        Application.Run(new Form1());
    }
    private void textBox1_TextChanged(object sender, System.EventArgs e) {
    }
    private void Form1_Load(object sender, System.EventArgs e) {
        vScrollBar1.Maximum = 100;
        vScrollBar1.Minimum = 0;
        vScrollBar1.SmallChange = 1;
    }
    private void vScrollBar1_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e) {
        if (e.Type == ScrollEventType.Last)
            counter = 100;
        if (e.Type == ScrollEventType.First)
            counter = 0;
        if (e.Type == ScrollEventType.SmallDecrement)
            counter--;
        if (e.Type == ScrollEventType.SmallIncrement) {
            counter++;
        } 
        if (e.Type == ScrollEventType.LargeDecrement)
            counter -= 5;
        if (e.Type == ScrollEventType.LargeIncrement) {
            counter += 5;
        } 
        if (e.Type == ScrollEventType.First)
            counter = 0;
        if (e.Type == ScrollEventType.Last)
            counter = 100;
        Console.WriteLine(e.NewValue + "\n");
        if (counter > 100) counter = 100;
        if (counter < 0) counter = 0;
        Console.WriteLine(counter.ToString());
    }
}


Use ScrollBar to control the picture size

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
public class Sizer : System.Windows.Forms.Form {
    private System.Windows.Forms.PictureBox picCritter;
    private System.Windows.Forms.HScrollBar scrSize;
    
    public static void Main(){
        Application.Run(new Sizer());
    } 
    public Sizer() {
        InitializeComponent();
    }
    private void InitializeComponent() {
      this.picCritter = new System.Windows.Forms.PictureBox();
      this.scrSize = new System.Windows.Forms.HScrollBar();
      this.SuspendLayout();
      this.picCritter.BackColor = System.Drawing.Color.White;
      this.picCritter.Image = new Bitmap("winter.jpg");
      this.picCritter.Location = new System.Drawing.Point(8, 8);
      this.picCritter.Name = "picCritter";
      this.picCritter.Size = new System.Drawing.Size(40, 40);
      this.picCritter.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
      this.picCritter.TabIndex = 0;
      this.picCritter.TabStop = false;
      this.scrSize.Location = new System.Drawing.Point(16, 248);
      this.scrSize.Maximum = 200;
      this.scrSize.Minimum = 50;
      this.scrSize.Name = "scrSize";
      this.scrSize.Size = new System.Drawing.Size(256, 16);
      this.scrSize.TabIndex = 1;
      this.scrSize.Value = 50;
      this.scrSize.Scroll += new System.Windows.Forms.ScrollEventHandler(this.scrSize_Scroll);
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(292, 273);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {this.scrSize,
                                                                  this.picCritter});
      this.Name = "Sizer";
      this.Text = "Sizer";
      this.ResumeLayout(false);
  }
  private void scrSize_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e) {
      picCritter.Size = new Size(scrSize.Value, scrSize.Value);
  }
}


VScrollBar ValueChanged

 

using System;
using System.Drawing;
using System.Windows.Forms;
   
class ColorScroll: Form
{
     Panel        panel;
     Label[]      alabelName  = new Label[3];
     Label[]      alabelValue = new Label[3];
     VScrollBar[] avscroll    = new VScrollBar[3];
   
     public static void Main()
     {
          Application.Run(new ColorScroll());
     }
     public ColorScroll()
     {
          Color[] acolor = { Color.Red, Color.Green, Color.Blue };
  
          panel = new Panel();
          panel.Parent = this;
          panel.Location = new Point(0, 0);
          panel.BackColor = Color.White;
   
          for (int i = 0; i < 3; i++)
          {
               alabelName[i] = new Label();
               alabelName[i].Parent = panel;
               alabelName[i].ForeColor = acolor[i];
               alabelName[i].Text = "&" + acolor[i].ToKnownColor();
               alabelName[i].TextAlign = ContentAlignment.MiddleCenter;
   
               avscroll[i] = new VScrollBar();
               avscroll[i].Parent = panel;
               avscroll[i].SmallChange = 1;
               avscroll[i].LargeChange = 16;
               avscroll[i].Minimum  = 0;
               avscroll[i].Maximum = 255 + avscroll[i].LargeChange - 1;
               avscroll[i].ValueChanged += new EventHandler(ScrollOnValueChanged);
               avscroll[i].TabStop = true;
   
               alabelValue[i] = new Label();
               alabelValue[i].Parent = panel;
               alabelValue[i].TextAlign = ContentAlignment.MiddleCenter;
          }
          Color color = BackColor;
          avscroll[0].Value = color.R;  // Generates ValueChanged event
          avscroll[1].Value = color.G;
          avscroll[2].Value = color.B;
   
          OnResize(EventArgs.Empty);
     }
     protected override void OnResize(EventArgs ea)
     {
          base.OnResize(ea);
   
          int cx = ClientSize.Width;
          int cy = ClientSize.Height;
          int cyFont = Font.Height;
   
          panel.Size = new Size(cx / 2, cy);
   
          for (int i = 0; i < 3; i++)
          {
               alabelName[i].Location = new Point(i * cx / 6, cyFont / 2);
               alabelName[i].Size = new Size(cx / 6, cyFont);
   
               avscroll[i].Location = new Point((4 * i + 1) * cx / 24,
                                                2 * cyFont);
               avscroll[i].Size = new Size(cx / 12, cy - 4 * cyFont);
   
               alabelValue[i].Location = new Point(i * cx / 6,
                                                   cy - 3 * cyFont / 2);
               alabelValue[i].Size = new Size(cx / 6, cyFont);
          }
     }
     void ScrollOnValueChanged(Object obj, EventArgs ea)
     {
          for (int i = 0; i < 3; i++)
               if((VScrollBar) obj == avscroll[i])
                    alabelValue[i].Text = avscroll[i].Value.ToString();
   
          BackColor = Color.FromArgb(avscroll[0].Value, 
                                     avscroll[1].Value,
                                     avscroll[2].Value);
     }
}