none
TextBoxの文字数制限について RRS feed

  • 質問

  • こんにちは

    TextBoxで入力文字数を制限をする方法を調べています。

    MaxLangthにて最大文字数が設定出来ることは分かったのですが、最小文字数を設定するにはどうしたらいいのでしょうか?
    パスワードを入力するテキストボックスで、8文字以上32文字以下の制限を掛けたいのです。

    回答をよろしくお願いいたします。

    2012年11月30日 2:05

回答

  • TextBox.KeyPress イベントで8 文字未満なら入力を無効にすればいいと思います。

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
        if (this.textBox1.TextLength < 8) {
            e.Handled = true;
        }
    }


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク tk1278_u 2012年11月30日 3:03
    2012年11月30日 2:20
    モデレータ
  • 最大文字数は、それ以上入力されたときに入力を無効にすれば良いだけですので単純ですが、最小文字数の方はまずどういう動作が欲しいのかを定義するところから必要でしょう。

    それ以下になるときに入力を無視するとか(パスワード8文字の最後の1文字を修正するのが面倒そうです)、フォーカス移動を禁じるとか(よそからコピーしてこようと思ったときにストレスになりそう)、登録ボタン的なタイミングでエラーメッセージを出すとか。

    2012年11月30日 2:39
  • ひらぽんさんへ:
    入力前は0文字だから何も入力できなくなりませんか?

    質問者さんへ:
    8文字以下のとき、どういう動作を望みますか? たとえばパスワード入力中にユーザー名など別のフィールドを編集したくなったときは、どういう動作を望みますか?

    単に「制限を掛けたい」ではなく、もっと具体的な動作を質問者さんが検討すべきで、検討されているならこのような質問文にはならないはずです。 ついでにCtrl+Vとか、右クリックメニューから貼り付けとか考慮すべき操作はいろいろあります。

    2012年11月30日 2:43
  • 文字数がオーバーしている時には入れられないだけなのでわかりやすいですが、
    文字数が足りないときはValidatingイベントで文字数チェックするか、登録ボタンみたいなの押した時にチェックかけるかして、
    いずれにしろエラーメッセージみたいなのを出したほうがユーザさんにとっては良いと思います。
    2012年11月30日 2:44

すべての返信

  • TextBox.KeyPress イベントで8 文字未満なら入力を無効にすればいいと思います。

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
        if (this.textBox1.TextLength < 8) {
            e.Handled = true;
        }
    }


    ひらぽん http://d.hatena.ne.jp/hilapon/

    • 回答としてマーク tk1278_u 2012年11月30日 3:03
    2012年11月30日 2:20
    モデレータ
  • ひらぽん様、ありがとうございました。

    とても助かりました。

    これで進めてみようと思います。


    • 編集済み tk1278_u 2012年11月30日 2:39
    2012年11月30日 2:39
  • 最大文字数は、それ以上入力されたときに入力を無効にすれば良いだけですので単純ですが、最小文字数の方はまずどういう動作が欲しいのかを定義するところから必要でしょう。

    それ以下になるときに入力を無視するとか(パスワード8文字の最後の1文字を修正するのが面倒そうです)、フォーカス移動を禁じるとか(よそからコピーしてこようと思ったときにストレスになりそう)、登録ボタン的なタイミングでエラーメッセージを出すとか。

    2012年11月30日 2:39
  • ひらぽんさんへ:
    入力前は0文字だから何も入力できなくなりませんか?

    質問者さんへ:
    8文字以下のとき、どういう動作を望みますか? たとえばパスワード入力中にユーザー名など別のフィールドを編集したくなったときは、どういう動作を望みますか?

    単に「制限を掛けたい」ではなく、もっと具体的な動作を質問者さんが検討すべきで、検討されているならこのような質問文にはならないはずです。 ついでにCtrl+Vとか、右クリックメニューから貼り付けとか考慮すべき操作はいろいろあります。

    2012年11月30日 2:43
  • 文字数がオーバーしている時には入れられないだけなのでわかりやすいですが、
    文字数が足りないときはValidatingイベントで文字数チェックするか、登録ボタンみたいなの押した時にチェックかけるかして、
    いずれにしろエラーメッセージみたいなのを出したほうがユーザさんにとっては良いと思います。
    2012年11月30日 2:44
  • > ひらぽんさんへ:
    > 入力前は0文字だから何も入力できなくなりませんか?

    上記コードは当然、「8文字以上の初期値が設定してある」のが大前提ですね。検証については tk1278_u さんの検討すべき事項と思われます。


    ひらぽん http://d.hatena.ne.jp/hilapon/

    2012年11月30日 2:59
    モデレータ
  • 皆さん、回答をありがとうございます。

    佐祐理 様 : 入力が8文字以下の状態で登録ボタン等を押した時に、エラーメッセージが出るようにしたいと考えています。
             ユーザー名やその他フィールドはパスワード入力欄と同じ画面に表示し、登録ボタン等を押すまでは問題なく動作できるようにしたいです。

    mars12 様 : そうですね、8文字以下の時にエラーメッセージを出した方がいいですね・・・。ありがとうございます。

    2012年11月30日 2:59
  • 入力が8文字以下の状態で登録ボタン等を押した時に、エラーメッセージが出るようにしたいと考えています。
    ユーザー名やその他フィールドはパスワード入力欄と同じ画面に表示し、登録ボタン等を押すまでは問題なく動作できるようにしたいです。
    それは制限でも何でもなく、登録ボタンを押したときに文字数を数えるだけですよね。つまり「制限を掛けたい」という質問文は嘘で、質問内容を考えずに質問していたということでしょうか…。
    2012年11月30日 3:48
  • 佐祐理 様 : テキストボックスそのものに制限を掛ける、と言うよりも、制限をかけるまでの過程を知りたいと言ったら良いんでしょうか・・・。

             結果的に8文字以下でエラーが出れば、どんな方法でも構いません。

             そういう意味で、制限を掛けたい、と書きました。

    2012年11月30日 4:43
  • 結果的に8文字以下でエラーが出れば、どんな方法でも構いません。

    そういう意味で、制限を掛けたい、と書きました。

    皆さまの意見が参考になられたようなので、私の方で追加の回答マークを付けさせていただきました。

    質問すのは慣れてないようお見受けしますが、他のスレッドの質問を参考にしたり、
    「自分は本当は何がしたいんだろう」と質問前にいったん問題事項を整理した上で質問すると、
    より的確な回答が付きやすくなると思います。頑張ってください。


    ひらぽん http://d.hatena.ne.jp/hilapon/


    2012年11月30日 5:54
    モデレータ
  • こういった事例もあるよという参考までに書いておきます。

    ・すべてを選択してから Delete キーを押すと実は消せます。(右クリックメニューの切り取りでもできる)
    ・KeyPress だけでキー入力制限(文字入力制限)を考えると、貼り付けではまります。(Ctrl+V だけでなく、右クリックメニューの貼り付けがある)

    2012年11月30日 13:36
    モデレータ
  •  Validating イベントが出てこないのは何故だろう?使いにくい?


    Jitta@わんくま同盟

    2012年11月30日 14:12