C#でTextBoxに数値のみの入力制限をする方法を紹介します。
基本的な入力制限はもちろんのこと、コピペや再変換にも対応。
対応方法としては、テキスト変換時に数値以外を空文字に変更するだけ。
ただし、文字の削除のみだと、選択位置が変わるため、少し調整しています。
Regex m_NumOnlyRegex = new Regex("[^0-9]");
private void numTextBox_TextChanged( object sender, EventArgs e )
{
var preTextLen = numTextBox.Text.Length;
var selectPos = numTextBox.SelectionStart;
numTextBox.Text = m_NumOnlyRegex.Replace( numTextBox.Text, String.Empty );
var removeLen = preTextLen - numTextBox.Text.Length;
if( selectPos > removeLen )
{
numTextBox.SelectionStart = selectPos - removeLen;
}
else
{
numTextBox.SelectionStart = 0;
}
}
0 件のコメント:
コメントを投稿