티스토리 뷰
C#의 텍스트 박스(textBox) 컨트롤에는
패스워드 속성이 있다는 것은 아주 잘 알려진 사실이다.
사실 텍스트박스의 패스워드표시는
C#에만 있는것도 아니고
거의 모든 언어에 존재하는 속성이 아닐까 싶다.
오늘 포스팅을 하려고 하는 내용은
사실 아주 간단한 것이긴한데
의외로 검색하면 잘 안나오는 것 같아서 내가 정리를 한 번 해보는 것이다.
뭐냐하면
패스워드 캐릭터를 설정하고 해제하는 것을 코드로 표현하는 방법이다.
이게 무슨 말이냐...
일단 구글에서
"c# textbox 패스워드 표시" 등등의 키워드로 검색을 하면
여러가지 검색결과가 많이 나오는데 대부분은
Passwordchar 속성에 "*"와 같은 문자를 입력해서
화면에 이렇게 표시되는 것들에 대해서만 알려주는 것들이 많은걸로 보인다.
그런데 여기서 궁금한게 하나 생기는데
패스워드 문자가 "*"로 표시되면 사용자가 오류 입력을 했을 경우에
원인을 알기가 어려워서 오류 초과로 계정이 잠겨 버린다던지 하는 것을 방지하기 위해
패스워드를 표시하도록 하는 기능을 만들 수는 없는것인가 하는 것이다.
그러니까 요런거
"패스워드 보이기" 같은 체크박스를 하나 만들어서
체크가 풀려있으면 암호화된 캐릭터로 체크가 되어있으면 복호화된 캐릭터로 보이도록 하는거다.
진짜로 궁금한건 이런거지... ㅎㅎ
이건 디자인타임에서 하기에는 불가능하기 때문에 런타임에서 코드로 구현을 해야하는데
우선 다음과 같이 해 볼 수 있을 것 같다.
체크박스 컨트롤을 하나 추가하고
if(checkBox1.Checked == true)
{
textBox1.PasswordChar = "";
} else
{
textBox1.PasswordChar = "*";
}
패스워드 문자 속성이 원래 아무 값이 없었으니
체크박스에 체크가 되어 있다면 공백을 넣어주고 체크가 되어 있지 않으면 "*"을 주는 것이다.
이렇게 하면 결과는? ㅎㅎ 다음과 같다.
오류 메세지가 긴데... 요점은 'string'형식을 'char'형식으로 변환할 수 없다... 인 것 으로 보인다.
해결방법은?
가장 간단한 것은 따옴표를 바꿔주는 것이다.
그냥 간단하게 C#에서 홑따옴표는 char형, 쌍따옴표는 string형 이라고 생각하면 쉽다.... ㅎㅎㅎ
따라서 아래와 같이 쌍따옴표 부분을 홑따옴표로 변경해서
if(checkBox1.Checked == true)
{
textBox1.PasswordChar = ''; // ""를 ''로 변경
} else
{
textBox1.PasswordChar = '*'; // ""를 ''로 변경
}
이렇게 바꿔볼 수 있을 것 같다.
그럼 결과는? ㅎㅎ 다음과 같다.
에러 메세지 창이 어떻게 해도 가려져서... 안보이긴 하지만 "*" 를 '*'로 변경한 부분에서 에러는 해제 되었으나
""를 ''로 변경한 부분에서는 빈 문자를 입력해서 에러가 난 모양이다.....
쳇... 까다롭기는... 쉬운게 없네.... 하고 생각할지 모르지만 다 이유가 있어서 에러가 발생하는 거니까
그러려니.... 하고 적응하는 수 밖에...
그럼 이제 결론으로 들어가서 어떻게 하면 해결 할 수 있는지 알아보자.
해결 방법은 다음과 같다.
if(checkBox1.Checked == true)
{
textBox1.PasswordChar = default(char);
} else
{
textBox1.PasswordChar = '*';
}
간단한 코드 몇 줄 설명하는데 쓸데없이 내용이 길어지는 거 같아서...
더 이상의 자세한 설명은 생략하기로 한다.
결과는?
물론 잘 작동하지만 직접 확인해 보길 바란다.
끝~!
※ 참고로 default같은 경우는 구 버전 .net 프레임워크에서는 동작하지 않을 수도 있다고 하니 안되면 체크해보길~
'.NET(C#, VB) etc' 카테고리의 다른 글
[C#] VisualStudio 도구상자에서 textbox가 안보일 때 (3) | 2020.10.03 |
---|---|
[개발도구]비쥬얼 스튜디오 코드(Visual Studio Code) 설치 방법 (0) | 2020.08.19 |
[C#] ADO를 이용한 데이터베이스(DB)연결 및 쿼리실행(select, insert, delete등) (0) | 2019.05.15 |
[C#] 타이머 컨트롤을 이용해 특정 시간대에 동작하도록 하는 간단한 윈폼 (0) | 2019.03.08 |
[C#] StreamReader(스트림 리더)를 이용한 텍스트파일 읽기 (0) | 2019.03.04 |
- Total
- Today
- Yesterday
- 오락실게임
- c#
- MS-SQL
- 틀린그림찾기
- 플래쉬
- XML Programming with VB 6.0
- 플래시
- 플래쉬게임
- C
- 8비트상성
- Excel
- 8비트
- 추억의 게임
- xml강좌
- 오락실 게임
- SQL
- 고전게임
- brawlstars
- XML
- 좀비게임
- 엑셀
- 브롤스타즈
- 고전명작
- 다른그림찾기
- 플래시 게임
- 레트로게임
- 플래쉬 게임
- 플래시게임
- 중독성짱게임
- J.S Bach
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |