티스토리 뷰

반응형

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 프레임워크에서는 동작하지 않을 수도 있다고 하니 안되면 체크해보길~

 

반응형
댓글
반응형
05-18 14:50
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함