2012-03-07 3 views
0

의 시스템 암호 char을 사용하여 텍스트를 암호로 렌더링 Windows Forms TextBox 컨트롤에는 에 입력 한 암호를 모호하게하는 두 가지 속성, PasswordCharUseSystemPasswordChar이 있습니다. 같은 방법으로 비 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; 

는 후드이 호출은 윈도우 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

관련 문제