パスワードを入力するためのテキストボックスの場合、入力された文字がそのまま表示されては困ります。ここでは、テキストボックスに入力された文字を隠して、代わりに別の文字を表示する(マスクする)方法を紹介します。
TextBoxコントロールのPasswordCharプロパティに文字を設定すると、TextBoxに入力された文字の代わりに、その文字が表示されるようになります。
例えばPasswordCharプロパティを「*」にしたテキストボックスは、以下の画像のようになります。
'TextBox1に入力された文字がすべて*で表示されるようにする
TextBox1.PasswordChar = "*"c
//TextBox1に入力された文字がすべて*で表示されるようにする
TextBox1.PasswordChar = '*';
このような方法でマスクをしている時、入力された文字は隠れますが、文字数は分かってしまいます。また、テキストボックスのIMEは無効になり、文字列の切り取りやコピーもできなくなります。
補足:PasswordCharプロパティは、.NET Framework 2.0以降では、単一行でも複数行TextBoxでも有効です(日本語OSの場合?)。それ以外では、単一行TextBoxでのみ有効です。
テキストボックスのマスクを解除するには、PasswordCharプロパティの値を0(NULL文字)にします。
'TextBox1のマスクを解除する TextBox1.PasswordChar = ControlChars.NullChar '次のようにしても同じ TextBox1.PasswordChar = vbNullChar TextBox1.PasswordChar = ChrW(0)
//TextBox1のマスクを解除する TextBox1.PasswordChar = '\0'; //次のようにしても同じ TextBox1.PasswordChar = (char)0;
PasswordCharプロパティに似たものに、TextBox.UseSystemPasswordCharプロパティがあります。UseSystemPasswordCharプロパティをTrueにすると、既定のシステムパスワード文字(OSによって、「*」や「●」など)を使用して、入力文字がマスクされます。UseSystemPasswordCharプロパティは、.NET Framework 2.0以降で使用できます。
PasswordCharプロパティよりも、UseSystemPasswordCharプロパティの設定が優先されます。
補足:UseSystemPasswordCharプロパティをTrueにすると、PasswordCharプロパティが返す値がシステムのパスワード文字に変わります。しかしUseSystemPasswordCharプロパティをFalseに戻すと、元の通り、PasswordCharプロパティに設定された文字を返すようになります。
補足:UseSystemPasswordCharプロパティは、単一行TextBoxコントロールでのみ有効です。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。