2017年11月10日金曜日

C#でTextBoxに数値のみの入力制限をする方法



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 件のコメント:

コメントを投稿