Csharp/C Sharp/GUI Windows Form/MaskedTextBox
Masked TextBox Host
<source lang="csharp"> /* 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.ruponentModel; 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.ruponentModel.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; }
}
}
</source>
MaskedTextBox with MaskInputRejected event
<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; public class MainWindow : Form {
public MainWindow() { InitializeComponent(); CreateLabelControl(); } private void btnDisplayData_Click(object sender, EventArgs e) { string textBoxData = ""; textBoxData += string.Format("MultiLine: {0}\n", txtMultiline.Text); textBoxData += string.Format("\nPassword: {0}\n", txtPassword.Text); textBoxData += string.Format("\nUppercase: {0}\n", txtUpperCase.Text); textBoxData += string.Format("\nMasked: {0}\n", txtMaskedTextBox.Text); MessageBox.Show(textBoxData, "Here is the data in your TextBoxes"); } private void CreateLabelControl() { Label lblInstructions = new Label(); lblInstructions.Text = "Please enter values in all the text boxes"; lblInstructions.Font = new Font("Times New Roman", 9.75F, FontStyle.Bold); lblInstructions.AutoSize = true; lblInstructions.Location = new System.Drawing.Point(16, 13); lblInstructions.Size = new System.Drawing.Size(240, 16); this.Controls.Add(lblInstructions); } private void txtMaskedTextBox_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) { this.Text = string.Format("Error: {0}", e.RejectionHint); } private void txtMaskedTextBox_KeyDown(object sender, KeyEventArgs e) { this.Text = "Labels and TextBoxes"; } private void InitializeComponent() { this.lblPassword = new System.Windows.Forms.Label(); this.txtPassword = new System.Windows.Forms.TextBox(); this.lblMultiline = new System.Windows.Forms.Label(); this.txtMultiline = new System.Windows.Forms.TextBox(); this.lblUpperCaseOnly = new System.Windows.Forms.Label(); this.txtUpperCase = new System.Windows.Forms.TextBox(); this.lblMaskedTextBox = new System.Windows.Forms.Label(); this.txtMaskedTextBox = new System.Windows.Forms.MaskedTextBox(); this.btnDisplayData = new System.Windows.Forms.Button(); this.SuspendLayout(); this.lblPassword.AutoSize = true; this.lblPassword.Location = new System.Drawing.Point(13, 43); this.lblPassword.Name = "lblPassword"; this.lblPassword.Size = new System.Drawing.Size(94, 13); this.lblPassword.TabIndex = 0; this.lblPassword.Text = "&Password TextBox:"; this.txtPassword.Location = new System.Drawing.Point(125, 43); this.txtPassword.Name = "txtPassword"; this.txtPassword.PasswordChar = "*"; this.txtPassword.Size = new System.Drawing.Size(220, 20); this.txtPassword.TabIndex = 1; this.lblMultiline.AutoSize = true; this.lblMultiline.Location = new System.Drawing.Point(14, 80); this.lblMultiline.Name = "lblMultiline"; this.lblMultiline.Size = new System.Drawing.Size(86, 13); this.lblMultiline.TabIndex = 2; this.lblMultiline.Text = "&Multiline TextBox:"; this.txtMultiline.Location = new System.Drawing.Point(125, 80); this.txtMultiline.Multiline = true; this.txtMultiline.Name = "txtMultiline"; this.txtMultiline.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.txtMultiline.Size = new System.Drawing.Size(220, 52); this.txtMultiline.TabIndex = 3; this.lblUpperCaseOnly.AutoSize = true; this.lblUpperCaseOnly.Location = new System.Drawing.Point(15, 157); this.lblUpperCaseOnly.Name = "lblUpperCaseOnly"; this.lblUpperCaseOnly.Size = new System.Drawing.Size(82, 13); this.lblUpperCaseOnly.TabIndex = 4; this.lblUpperCaseOnly.Text = "&Uppercase Only:"; this.txtUpperCase.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; this.txtUpperCase.Location = new System.Drawing.Point(125, 157); this.txtUpperCase.Name = "txtUpperCase"; this.txtUpperCase.Size = new System.Drawing.Size(220, 20); this.txtUpperCase.TabIndex = 5; // this.lblMaskedTextBox.AutoSize = true; this.lblMaskedTextBox.Location = new System.Drawing.Point(15, 199); this.lblMaskedTextBox.Name = "lblMaskedTextBox"; this.lblMaskedTextBox.Size = new System.Drawing.Size(83, 13); this.lblMaskedTextBox.TabIndex = 7; this.lblMaskedTextBox.Text = "Mas&ked TextBox"; // this.txtMaskedTextBox.BeepOnError = true; this.txtMaskedTextBox.CausesValidation = false; this.txtMaskedTextBox.Location = new System.Drawing.Point(125, 199); this.txtMaskedTextBox.Mask = "(999) 000-0000"; this.txtMaskedTextBox.Name = "txtMaskedTextBox"; this.txtMaskedTextBox.Size = new System.Drawing.Size(220, 20); this.txtMaskedTextBox.TabIndex = 8; this.txtMaskedTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtMaskedTextBox_KeyDown); this.txtMaskedTextBox.MaskInputRejected += new System.Windows.Forms.MaskInputRejectedEventHandler(this.txtMaskedTextBox_MaskInputRejected); // this.btnDisplayData.Location = new System.Drawing.Point(257, 236); this.btnDisplayData.Name = "btnDisplayData"; this.btnDisplayData.Size = new System.Drawing.Size(88, 23); this.btnDisplayData.TabIndex = 6; this.btnDisplayData.Text = "Display Data"; this.btnDisplayData.Click += new System.EventHandler(this.btnDisplayData_Click); // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(357, 276); this.Controls.Add(this.txtMaskedTextBox); this.Controls.Add(this.lblMaskedTextBox); this.Controls.Add(this.btnDisplayData); this.Controls.Add(this.txtUpperCase); this.Controls.Add(this.lblUpperCaseOnly); this.Controls.Add(this.txtMultiline); this.Controls.Add(this.lblMultiline); this.Controls.Add(this.txtPassword); this.Controls.Add(this.lblPassword); this.Text = "Fun with Labels and TextBoxes"; this.ResumeLayout(false); this.PerformLayout(); } private System.Windows.Forms.Label lblPassword; private System.Windows.Forms.TextBox txtPassword; private System.Windows.Forms.Label lblMultiline; private System.Windows.Forms.TextBox txtMultiline; private System.Windows.Forms.Label lblUpperCaseOnly; private System.Windows.Forms.TextBox txtUpperCase; private System.Windows.Forms.Label lblMaskedTextBox; private System.Windows.Forms.MaskedTextBox txtMaskedTextBox; private System.Windows.Forms.Button btnDisplayData; [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new MainWindow()); }
}
</source>