Windowsのパスワードを入力するテキストボックスでは、入力した文字がどのような文字であるかを隠すため、「●」や「*」などの文字が表示されます。
今回は、Windowsフォームアプリケーションでパスワードを入力するテキストボックスを配置した際に、パスワードを隠すための文字を設定する方法を紹介します。
本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
パスワードを入力した時に表示する文字の設定
テキストボックスの文字の揃え位置を設定するには、System.Windows.Forms名前空間にあるTextBoxクラスのPasswordCharプロパティ、またはUseSystemPasswordCharプロパティを使用します。
PasswordCharプロパティは、パスワードが入力された時に表示する文字を指定する場合に使用します。
UseSystemPasswordCharプロパティは、システムが持つ文字をパスワードが入力された時に表示する場合に使用します。
PasswordCharプロパティとUseSystemPasswordCharプロパティの設定は、フォームデザイナーのプロパティグリッドとソースコードのどちらでも行うことができます。
デザイナーのプロパティグリッドで設定する
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
プロパティウィンドウが表示されたら、フォームに配置したテキストボックスをクリックして選択します。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
PasswordCharプロパティ
デザイナーのプロパティグリッドにあるPasswordCharプロパティを選択します。
PasswordCharプロパティのテキストボックスにパスワードを入力した際に表示される文字を入力します。
UseSystemPasswordCharプロパティ
デザイナーのプロパティグリッドにあるUseSystemPasswordCharプロパティを選択します。
UseSystemPasswordCharプロパティのドロップダウンリストボックスのリストアイテムでTrueを選択します。
コードで設定する
フォームに「textBox1」という名前のテキストボックスを配置し、コードエディタを表示して以下のコードを入力します。
1 2 3 4 |
// パスワード文字を設定 this.textBox1.PasswordChar = '■'; // システムのパスワード文字を設定 this.textBox2.UseSystemPasswordChar = true; |
上記のコードはフォームのコンストラクタ内や、フォームのロードイベント(Form.Load)メソッド内、またはフォームのオンロード(OnLoad)メソッドをオーバーライドしたメソッド内に記述することで、フォームの起動時に設定することができます。
サンプルプログラム
テキストボックスにパスワードを入力するサンプルプログラムを作成します。
ユーザーインターフェース
フォームには、パスワード文字列を入力するテキストボックス(textBox1とtextBox2)と、設定を切り替えるボタン(button1とbutton2)を配置します。
ソースコード
ボタンがクリックされた時の処理を記述します。
button1がクリックされた時は、textBox1のPasswordCharプロパティの設定を切り替えます。
button2がクリックされた時は、textBox2のUseSystemPasswordCharプロパティの設定を切り替えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); } // パスワード入力時に表示される文字を指定 private void button1_Click(object sender, EventArgs e) { try { // パスワード入力時に表示する文字の設定を切り替える if (this.textBox1.PasswordChar == '\0') { this.textBox1.PasswordChar = '*'; } else { this.textBox1.PasswordChar = '\0'; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // パスワード入力時に表示される文字にシステムパスワード文字を使う private void button2_Click(object sender, EventArgs e) { try { // パスワード入力時に表示する文字の設定を切り替える this.textBox2.UseSystemPasswordChar = !this.textBox2.UseSystemPasswordChar; } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
プロジェクトをビルドして実行(デバッグ)してフォームを表示します。
テキストボックスにパスワード文字列を入力します。
ボタンをクリックするとパスワードの代わりに表示する文字が表示されます。
もう1度ボタンをクリックするとパスワードが表示されます。