Csharp/C Sharp/GUI Windows Form/ScrollBar — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 14:32, 26 мая 2010
Содержание
ScrollBars Demo
<source lang="csharp"> /* 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() ; } }
}
</source>
Scroll event
<source lang="csharp"> 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()); }
}
</source>
Use ScrollBar to control the picture size
<source lang="csharp"> 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); }
}
</source>
VScrollBar ValueChanged
<source lang="csharp">
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); }
}
</source>