2012-03-07 6 views
0

WindowsフォームTextBoxには、とUseSystemPasswordCharという2つのプロパティがあり、TextBoxに入力されたパスワードの隠蔽を制御します。同じ方法で、指定したテキストを非TextBoxグラフィックサーフェスにレンダリングする必要があります。Windowsのシステムパスワードを使用してテキストをパスワードとしてレンダリングします。Forms.NET

PasswordCharプロパティのcharを使用する場合、指定された文字列の長さを計算して同等のテキスト表現を作成できますが、UseSystemPasswordCharはどうなりますか?どのようにして有効なシステムパスワードcharを取得しますか?

この作業をすべて手動で行うことなく、指定されたテキストをパスワードとしてレンダリングするために使用できる、フラグまたは準備済みの.NETメソッドまたはクラスがありますか?

+0

「レンダリングされたテキスト」は、この文脈でかなり奇妙に聞こえる。 –

答えて

0

ビジュアルスタイルが有効になっている場合を除き、Windowsのデフォルトのパスワード文字はアリスリスクです。この場合は黒い丸です。

あなたは視覚的なスタイルが代わりApplication.RenderWithVisualStyles

http://msdn.microsoft.com/en-us/library/windows/desktop/bb761594(v=vs.85).aspx

経由で有効になっている場合、あなたはテキストボックスを作成することができ、これは少し汚れを感じているものの、単純に、PasswordChar入力の値を読み取るかを確認することができます。ボンネットの下に

char passwordChar = (new TextBox(){UseSystemPasswordChar = true}).PasswordChar; 

この呼び出しは、Windows APIにEM_GETPASSWORDCHARメッセージを送信しています。

+0

将来のバージョンのOSでこの設定が変更される場合はどうなりますか?現在のシステムパスワード文字を取得するには、良い方法が必要です。 – 10Tec

+0

「システムパスワード文字」自体はありません。Windows APIの基本コントロール(Monoの動作が不明)に基づいています。私は文字を取得する動的な方法で私の答えを更新しました。 – roken

+0

同じことをやろうとしました。 TextBox myTextBox = new TextBox(); myTextBox.UseSystemPasswordChar = true; fPasswordCharEffective =(char)iGNativeMethods.SendMessage(myTextBox.Handle、NativeMethods.EM_GETPASSWORDCHAR、IntPtr.Zero、IntPtr.Zero); myTextBox.Dispose(); しかし、設計時にUseSystemPasswordCharがTrueに設定されていても、PasswordCharプロパティが有効なパスワードcharを返すことは非常に面白いです! "*"に設定しますが、UseSystemPasswordCharがTrueの場合、PasswordCharはWin7の黒いディスクを返します! – 10Tec

関連する問題