C#における、テキストボックスに入力した時にマスクする方法、いわゆるパスワードマスクみたいなやつです。
テキストボックスのパスワードマスク
テキストボックスのパスワードマスクはそれほど難しいことではありません。テキストボックスのPasswordChar プロパティに値を入れるだけです。
VisualStudio上のデザイナー画面にあるプロパティから簡単に出来ます。
上記画像ではとりあえず「●」をマスクの値として入れていますが、例えば「*」(アスタリスク)などでもマスクの値として使用することが出来ます。
もしくは、ソースコード上でPasswordChar プロパティに値を入れても効果は同じです。
textBoxInput.PasswordChar = '●';
どちらでも大丈夫ですが、この辺りは現場のルールに則って下さい。
サンプルコード
パスワードマスクの超絶簡単なサンプルコードです。
上のテキストボックスに値を入れるとマスク化されるので、実行ボタンを押して、下のテキストボックスにマスク化された値を表示させます。
public partial class FormMask : Form { public FormMask() { InitializeComponent(); } private void BtnGetInputValue_Click(object sender, EventArgs e) { // マスクされた値を表示 this.textBoxOutput.Text = this.textBoxInput.Text; } }
実行ボタンクリックイベントの際に、上のテキストボックスの値を下のテキストボックスに入れてます。たったそれだけです。
PasswordChar プロパティには「●」を設定しています。
では起動して実行してみます。
試しに「にほん」と入力しました。ローマ字キーボード入力だと「nihon」なので、5文字。マスク化で「●●●●●」となっています。
実行ボタンを押して出力させると…
入力した「nihon」が出力されています。
マスクされたらコピーは出来ない
ちなみに、マスクされた状態のテキストボックスはコピーすることが出来ません。
テキストボックスに値を入力し、全選択から右クリックしても、コピーできないことが分かります。
ショートカットキー(Ctrl + V)を使うと、警告が表示されます。
その他カスタマイズ
ちょっとしたプロパティのカスタマイズです。
- MaxLength プロパティ…入力文字数を制限できる
- CharacterCasing プロパティ…入力文字の大小変換(Lower…全部小文字、Upper…全部大文字、Normal…そのまま)
標準コントロールのプロパティが出来るのはこれくらいで、例えば、最低文字数のチェック等は、テキストボックスのフォーカスが外れた後や、ボタン押した時に文字数チェックを実装する必要があります。