SSISO Community

갤러리정

Masked TextBox Host

/*
User  Interfaces  in  C#:  Windows  Forms  and  Custom  Controls
by  Matthew  MacDonald

Publisher:  Apress
ISBN:  1590590457
*/


using  System;
using  System.Drawing;
using  System.Collections;
using  System.ComponentModel;
using  System.Windows.Forms;
using  System.Data;

namespace  MaskedTextBoxHost
{
        ///  <summary>
        ///  Summary  description  for  MaskedTextBoxHost.
        ///  </summary>
        public  class  MaskedTextBoxHost  :  System.Windows.Forms.Form
        {
                ///  <summary>
                ///  Required  designer  variable.
                ///  </summary>
                private  System.ComponentModel.Container  components  =  null;

                public  MaskedTextBoxHost()
                {
                        //
                        //  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  );
                }

                ///  <summary>
                ///  Required  method  for  Designer  support  -  do  not  modify
                ///  the  contents  of  this  method  with  the  code  editor.
                ///  </summary>
                private  void  InitializeComponent()
                {
                        //  
                        //  MaskedTextBoxHost
                        //  
                        this.AutoScaleBaseSize  =  new  System.Drawing.Size(5,  13);
                        this.ClientSize  =  new  System.Drawing.Size(292,  266);
                        this.Name  =  "MaskedTextBoxHost";
                        this.Text  =  "MaskedTextBoxHost";
                        this.Load  +=  new  System.EventHandler(this.MaskedTextBoxHost_Load);

                }


                ///  <summary>
                ///  The  main  entry  point  for  the  application.
                ///  </summary>
                [STAThread]
                static  void  Main()  
                {
                        Application.Run(new  MaskedTextBoxHost());
                }

                private  void  MaskedTextBoxHost_Load(object  sender,  System.EventArgs  e)
                {
                        MaskedTextBox  txtMask  =  new  
                                MaskedTextBox();
                        txtMask.Location  =  new  Point(10,  10);
                        txtMask.Mask  =  "(###)  ###-####";
                        this.Controls.Add(txtMask);

                }
        }
        public  class  MaskedTextBox  :  TextBox
        {
                private  string  mask;
                public  string  Mask
                {
                        get
                        {
                                return  mask;
                        }
                        set
                        {
                                mask  =  value;
                                this.Text  =  "";
                        }
                }

                protected  override  void  OnKeyPress(KeyPressEventArgs  e)
                {
                        if  (Mask  !=  "")
                        {
                                //  Suppress  the  typed  character.
                                e.Handled  =  true;

                                string  newText  =  this.Text;

                                //  Loop  through  the  mask,  adding  fixed  characters  as  needed.
                                //  If  the  next  allowed  character  matches  what  the  user  has
                                //  typed  in  (a  number  or  letter),  that  is  added  to  the  end.
                                bool  finished  =  false;
                                for  (int  i  =  this.SelectionStart;  i  <  mask.Length;  i++)
                                {
                                        switch  (mask[i].ToString())
                                        {
                                                case  "#"  :
                                                        //  Allow  the  keypress  as  long  as  it  is  a  number.
                                                        if  (Char.IsDigit(e.KeyChar))
                                                        {
                                                                newText  +=  e.KeyChar.ToString();
                                                                finished  =  true;
                                                                break;
                                                        }
                                                        else
                                                        {
                                                                //  Invalid  entry;  exit  and  don't  change  the  text.
                                                                return;
                                                        }
                                                case  "."  :
                                                        //  Allow  the  keypress  as  long  as  it  is  a  letter.
                                                        if  (Char.IsLetter(e.KeyChar))
                                                        {
                                                                newText  +=  e.KeyChar.ToString();
                                                                finished  =  true;
                                                                break;
                                                        }
                                                        else
                                                        {
                                                                //  Invalid  entry;  exit  and  don't  change  the  text.
                                                                return;
                                                        }
                                                default  :
                                                        //  Insert  the  mask  character.
                                                        newText  +=  mask[i];
                                                        break;
                                        }
                                        if  (finished)
                                        {  break;  }
                                }

                                //  Update  the  text.
                                this.Text  =  newText;
                                this.SelectionStart  =  this.Text.Length;
                        }
        }        
    
                protected  override  void  OnKeyDown(KeyEventArgs  e)
                {
                        //  Stop  special  characters.
                        e.Handled  =  true;
                }

}



}

1189 view

4.0 stars