DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

TextBoxに入力されたパスワード文字を隠す(マスクする)

パスワードを入力するためのテキストボックスの場合、入力された文字がそのまま表示されては困ります。ここでは、テキストボックスに入力された文字を隠して、代わりに別の文字を表示する(マスクする)方法を紹介します。

TextBox.PasswordCharプロパティを使用する方法

TextBoxコントロールのPasswordCharプロパティに文字を設定すると、TextBoxに入力された文字の代わりに、その文字が表示されるようになります。

例えばPasswordCharプロパティを「*」にしたテキストボックスは、以下の画像のようになります。

PasswordCharプロパティを「*」にしたテキストボックス

VB.NET
コードを隠すコードを選択
'TextBox1に入力された文字がすべて*で表示されるようにする
TextBox1.PasswordChar = "*"c
C#
コードを隠すコードを選択
//TextBox1に入力された文字がすべて*で表示されるようにする
TextBox1.PasswordChar = '*';

このような方法でマスクをしている時、入力された文字は隠れますが、文字数は分かってしまいます。また、テキストボックスのIMEは無効になり、文字列の切り取りやコピーもできなくなります。

補足:PasswordCharプロパティは、.NET Framework 2.0以降では、単一行でも複数行TextBoxでも有効です(日本語OSの場合?)。それ以外では、単一行TextBoxでのみ有効です。

テキストボックスのマスクを解除するには、PasswordCharプロパティの値を0(NULL文字)にします。

VB.NET
コードを隠すコードを選択
'TextBox1のマスクを解除する
TextBox1.PasswordChar = ControlChars.NullChar

'次のようにしても同じ
TextBox1.PasswordChar = vbNullChar
TextBox1.PasswordChar = ChrW(0)
C#
コードを隠すコードを選択
//TextBox1のマスクを解除する
TextBox1.PasswordChar = '\0';

//次のようにしても同じ
TextBox1.PasswordChar = (char)0;

TextBox.UseSystemPasswordCharプロパティを使用する方法

PasswordCharプロパティに似たものに、TextBox.UseSystemPasswordCharプロパティがあります。UseSystemPasswordCharプロパティをTrueにすると、既定のシステムパスワード文字(OSによって、「*」や「●」など)を使用して、入力文字がマスクされます。UseSystemPasswordCharプロパティは、.NET Framework 2.0以降で使用できます。

PasswordCharプロパティよりも、UseSystemPasswordCharプロパティの設定が優先されます。

補足:UseSystemPasswordCharプロパティをTrueにすると、PasswordCharプロパティが返す値がシステムのパスワード文字に変わります。しかしUseSystemPasswordCharプロパティをFalseに戻すと、元の通り、PasswordCharプロパティに設定された文字を返すようになります。
補足:UseSystemPasswordCharプロパティは、単一行TextBoxコントロールでのみ有効です。
  • 履歴:
  • 2007/1/15 TextBox.UseSystemPasswordCharプロパティに関する記述を追加。
  • 2014/10/14 マスクを解除する方法を追加など。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。