MaskedTextBox 是繼承自 TextBox 的內建控制項,透過 Mask 屬性定義輸入格式,可強制使用者依照特定模式輸入(如數字、日期、電話號碼等),並自動顯示提示字元與分隔符。
using System;
using System.Windows.Forms;
sealed class TestForm : Form
{
private MaskedTextBox m_maskedTextBox;
private ToolTip m_toolTip;
public TestForm()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.m_maskedTextBox = new MaskedTextBox();
this.m_maskedTextBox.Mask = "999,999.00";
this.m_maskedTextBox.Dock = DockStyle.Fill;
this.m_maskedTextBox.MaskInputRejected += m_maskedTextBox_InputRejected;
this.m_maskedTextBox.KeyDown += m_maskedTextBox_KeyDown;
this.m_toolTip = new ToolTip();
this.ClientSize = new Size(100, 60);
this.Controls.Add(this.m_maskedTextBox);
this.PerformLayout();
}
private void m_maskedTextBox_InputRejected(object sender, MaskInputRejectedEventArgs e)
{
m_toolTip.ToolTipTitle = "Invalid Input";
m_toolTip.Show("Only digits (0-9) are allowed.", m_maskedTextBox, m_maskedTextBox.Location, 5000);
}
private void m_maskedTextBox_KeyDown(object sender, KeyEventArgs e)
{
m_toolTip.Hide(m_maskedTextBox);
}
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new TestForm());
}
}
Mask:定義輸入遮罩,如 "999,999.00" 表示六位可選數字、逗號分隔、兩位強制小數。MaskInputRejected:輸入不符合遮罩時觸發,可顯示工具提示告知使用者。KeyDown:按鍵按下時隱藏工具提示。輸入內容(分隔符自動顯示,僅需填入數字):

輸入不符合遮罩模式時:

遮罩模式靈活,可處理各種格式化輸入需求;設計師支援完整,屬性可視化設定。若 ES_NUMBER 功能不足,且自行處理 KeyDown 驗證不夠優雅時,MaskedTextBox 是極佳選擇。