using System; using System.Windows.Forms; using System.ComponentModel; namespace Payroll.Controls { #region Number Control public class NumControl : System.Windows.Forms.UserControl { #region Declaration private string m_sFormat; private System.Windows.Forms.TextBox txtNumber; private System.ComponentModel.Container components = null; public event System.EventHandler ValueChanged; public NumControl() { m_sFormat="0.00"; InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #endregion #region Component Designer generated code private void InitializeComponent() { this.txtNumber = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // txtNumber // this.txtNumber.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.txtNumber.Font = new System.Drawing.Font("Tahoma", 8.25F); this.txtNumber.Location = new System.Drawing.Point(1, 1); this.txtNumber.Name = "txtNumber"; this.txtNumber.Size = new System.Drawing.Size(144, 21); this.txtNumber.TabIndex = 0; this.txtNumber.Text = "0.00"; this.txtNumber.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; this.txtNumber.TextChanged += new System.EventHandler(this.txtNumber_TextChanged); this.txtNumber.Validated += new System.EventHandler(this.txtNumber_Validated); this.txtNumber.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtNumber_KeyPress); // // NumControl // this.Controls.Add(this.txtNumber); this.Name = "NumControl"; this.Size = new System.Drawing.Size(147, 23); this.Resize += new System.EventHandler(this.ctlNumber_Resize); this.ForeColorChanged += new System.EventHandler(this.EaseNum_ForeColorChanged); this.ResumeLayout(false); this.PerformLayout(); } #endregion #region Conreol Related fucntion [Description("Set border style of the control"), Category("Behavior")] public BorderStyle BorderStyle { get{return txtNumber.BorderStyle;} set{txtNumber.BorderStyle=value;} } [Description("Sets the numeric value format"), Category("Behavior")] public string Format { get{return m_sFormat;} set { m_sFormat=value; txtNumber.Text=m_sFormat; } } [Description("Sets the numeric type value"), Category("Behavior")] public double Value { get{return double.Parse(txtNumber.Text);} set{txtNumber.Text= value.ToString(m_sFormat);} } public override string ToString() { return txtNumber.Text; } private void ctlNumber_Resize(object sender, System.EventArgs e) { if (this.Width<=10){this.Width=10;} this.Height=20; txtNumber.Top=0; txtNumber.Left=0; txtNumber.Width=this.Width; txtNumber.Height=this.Height; } private void txtNumber_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { int i=0, nCount=0; string sVal=""; switch (e.KeyChar) { case '\b': e.Handled=false; break; case '.': while (i < txtNumber.Text.Length) { sVal=txtNumber.Text.Substring(i,1); if (sVal=="."){nCount=nCount+1;} i=i+1; } e.Handled=(nCount!=0); break; case '-': if (txtNumber.SelectionStart>1) {e.Handled=true;} else { while (i < txtNumber.Text.Length) { sVal=txtNumber.Text.Substring(i,1); if (sVal=="-"){nCount=nCount+1;} i=i+1; } e.Handled=(nCount!=0); } break; default: if (Char.IsDigit(e.KeyChar)==false) {e.Handled=true;} break; } } private void txtNumber_Validated(object sender, System.EventArgs e) { if(txtNumber.Text.Trim().Length<=0){txtNumber.Text="0.00";} string sValue=txtNumber.Text; try { double dbl=double.Parse(sValue); sValue=dbl.ToString(m_sFormat); txtNumber.Text=sValue; } catch(Exception exp) { MessageBox.Show(exp.Message,"Error"); txtNumber.Text="0.00"; this.Focus(); } } private void txtNumber_TextChanged(object sender, System.EventArgs e) { try { ValueChanged(sender, e); return; } catch { } } private void EaseNum_ForeColorChanged(object sender, System.EventArgs e) { txtNumber.ForeColor=this.ForeColor; } #endregion #region Lately Added Functions & Properties private int _nMaxLength=32767; public int MaxLength { get{return _nMaxLength;} set{_nMaxLength=value;} } public void SetSelection(int nStart, int nLength) { txtNumber.SelectionStart=nStart; txtNumber.SelectionLength=nLength; } #endregion } #endregion }