1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (C) 2004-2005 Novell, Inc.
23 // Jordi Mas i Hernandez jordi@ximian.com
29 using System.ComponentModel;
30 using System.Drawing.Imaging;
31 using System.Drawing.Drawing2D;
33 namespace System.Windows.Forms
35 [DefaultProperty ("Value")]
36 public sealed class ProgressBar : Control
38 #region Local Variables
43 internal Rectangle client_area = new Rectangle ();
44 #endregion // Local Variables
48 [EditorBrowsable (EditorBrowsableState.Never)]
49 public new event EventHandler BackColorChanged;
52 [EditorBrowsable (EditorBrowsableState.Never)]
53 public new event EventHandler BackgroundImageChanged;
56 [EditorBrowsable (EditorBrowsableState.Never)]
\r
57 public new event EventHandler CausesValidationChanged;
60 [EditorBrowsable (EditorBrowsableState.Never)]
61 public new event EventHandler DoubleClick;
64 [EditorBrowsable (EditorBrowsableState.Never)]
65 public new event EventHandler Enter;
68 [EditorBrowsable (EditorBrowsableState.Never)]
69 public new event EventHandler FontChanged;
72 [EditorBrowsable (EditorBrowsableState.Never)]
73 public new event EventHandler ForeColorChanged;
76 [EditorBrowsable (EditorBrowsableState.Never)]
77 public new event EventHandler ImeModeChanged;
80 [EditorBrowsable (EditorBrowsableState.Never)]
\r
81 public new event KeyEventHandler KeyDown;
84 [EditorBrowsable (EditorBrowsableState.Never)]
\r
85 public new event KeyPressEventHandler KeyPress;
88 [EditorBrowsable (EditorBrowsableState.Never)]
\r
89 public new event KeyEventHandler KeyUp;
92 [EditorBrowsable (EditorBrowsableState.Never)]
93 public new event EventHandler Leave;
96 [EditorBrowsable (EditorBrowsableState.Never)]
97 public new event PaintEventHandler Paint;
100 [EditorBrowsable (EditorBrowsableState.Never)]
\r
101 public new event EventHandler RightToLeftChanged;
104 [EditorBrowsable (EditorBrowsableState.Never)]
\r
105 public new event EventHandler TabStopChanged;
108 [EditorBrowsable (EditorBrowsableState.Never)]
109 public new event EventHandler TextChanged;
112 #region Public Constructors
120 base.Paint += new PaintEventHandler (OnPaintPB);
121 base.Resize += new EventHandler (OnResizeTB);
123 SetStyle (ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
124 SetStyle (ControlStyles.ResizeRedraw | ControlStyles.Opaque, true);
126 #endregion // Public Constructors
128 #region Public Instance Properties
\r
131 [EditorBrowsable (EditorBrowsableState.Never)]
\r
132 public override bool AllowDrop
\r
134 get { return base.AllowDrop; }
136 base.AllowDrop = value;
140 // Setting this property in MS .Net 1.1 does not have any visual effect and it
\r
141 // does not fire a BackColorChanged event
143 [EditorBrowsable (EditorBrowsableState.Never)]
\r
144 public override Color BackColor
\r
146 get { return base.BackColor; }
147 set { BackColor = value; }
150 // Setting this property in MS .Net 1.1 does not have any visual effect and it
\r
151 // does not fire a BackgroundImageChanged event
153 [EditorBrowsable (EditorBrowsableState.Never)]
\r
154 public override Image BackgroundImage
\r
156 get { return base.BackgroundImage; }
157 set {BackgroundImage = value; }
161 [EditorBrowsable (EditorBrowsableState.Never)]
\r
162 public new bool CausesValidation
\r
164 get { return base.CausesValidation; }
166 if (base.CausesValidation == value)
169 CausesValidation = value;
170 if (CausesValidationChanged != null)
171 CausesValidationChanged (this, new EventArgs ());
175 protected override CreateParams CreateParams
\r
177 get { return base.CreateParams; }
180 protected override ImeMode DefaultImeMode
\r
182 get { return base.DefaultImeMode; }
185 protected override Size DefaultSize
\r
187 get { return ThemeEngine.Current.ProgressBarDefaultSize; }
190 // Setting this property in MS .Net 1.1 does not have any visual effect and it
\r
191 // does not fire a FontChanged event
193 [EditorBrowsable (EditorBrowsableState.Never)]
194 public override Font Font
\r
196 get { return base.Font; }
197 set { base.Font = value; }
200 // Setting this property in MS .Net 1.1 does not have any visual effect and it
\r
201 // does not fire a FontChanged event
203 [EditorBrowsable (EditorBrowsableState.Never)]
204 public override Color ForeColor
\r
206 get { return base.ForeColor; }
207 set { base.ForeColor = value; }
211 [EditorBrowsable (EditorBrowsableState.Never)]
212 public new ImeMode ImeMode
\r
214 get { return base.ImeMode; }
217 if (value == base.ImeMode)
220 base.ImeMode = value;
221 if (ImeModeChanged != null)
222 ImeModeChanged (this, EventArgs.Empty);
226 [RefreshProperties(RefreshProperties.Repaint)]
235 throw new ArgumentException(
236 string.Format("Value '{0}' must be greater than or equal to 0.", value ));
243 [RefreshProperties(RefreshProperties.Repaint)]
251 throw new ArgumentException(
252 string.Format("Value '{0}' must be greater than or equal to 0.", value ));
260 [EditorBrowsable (EditorBrowsableState.Never)]
261 public override RightToLeft RightToLeft
\r
263 get { return base.RightToLeft; }
265 if (base.RightToLeft == value)
268 base.RightToLeft = value;
270 if (RightToLeftChanged != null)
271 RightToLeftChanged (this, EventArgs.Empty);
287 [EditorBrowsable (EditorBrowsableState.Never)]
288 public new bool TabStop
\r
290 get { return base.TabStop; }
292 if (base.TabStop == value)
295 base.TabStop = value;
297 if (TabStopChanged != null)
298 TabStopChanged (this, EventArgs.Empty);
304 [EditorBrowsable (EditorBrowsableState.Never)]
306 public override string Text
\r
308 get { return base.Text; }
311 if (value == base.Text)
314 if (TextChanged != null)
315 TextChanged (this, EventArgs.Empty);
329 if (value < Minimum || value > Maximum)
330 throw new ArgumentException(
331 string.Format("'{0}' is not a valid value for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'", value));
339 #endregion // Protected Instance Properties
341 #region Public Instance Methods
343 protected override void CreateHandle ()
345 base.CreateHandle ();
348 public void Increment (int value)
350 int newValue = Value + value;
352 if (newValue < Minimum)
355 if (newValue > Maximum)
362 protected override void OnHandleCreated (EventArgs e)
364 base.OnHandleCreated (e);
369 public void PerformStep ()
371 if (Value >= Maximum)
374 Value = Value + Step;
378 public override string ToString()
380 return string.Format ("{0}, Minimum: {1}, Maximum: {2}, Value: {3}",
381 GetType().FullName.ToString (),
387 #endregion // Public Instance Methods
389 #region Private Instance Methods
390 private void UpdateAreas ()
392 client_area.X = client_area.Y = 2;
393 client_area.Width = Width - 4;
394 client_area.Height = Height - 4;
397 private void OnResizeTB (Object o, EventArgs e)
399 if (Width <= 0 || Height <= 0)
405 private void OnPaintPB (Object o, PaintEventArgs pevent)
407 ThemeEngine.Current.DrawProgressBar (pevent.Graphics, pevent.ClipRectangle, this);