문제

ListView Control의 특정 열에있는 텍스트를 암호 문자로 변환하는 방법이 있습니까? 고맙습니다.

도움이 되었습니까?

해결책

ListViewItem의 태그 속성에 실제 데이터 (이 경우 비밀번호)를 저장합니다. 그런 다음 원하는 것을 텍스트 필드에 넣을 수 있습니다. 이 패턴은 일반적으로 객체를 다른 유형의 목록/그리드 컨트롤의 항목과 연결하는 데 적합합니다.

String password = "MyPassword";
ListViewItem lvi = new ListViewItem("********");
lvi.Tag = password;

listView.Items.Add(lvi);

다른 팁

an을 사용하십시오 ObjectListView (.NET WinForms ListView 주변의 오픈 소스 래퍼). 그것은 목록보기에 관한 거의 모든 것을 훨씬 덜 고통스럽게 만듭니다. 때로는 재미 있습니다.

이 경우, 당신은 an을 사용합니다 AspectToStringConverter ListView에 표시하려는 문자열로 값을 변환 할 책임이있는 Delegate :

this.olv1.passwordColumn.AspectToStringConverter = delegate(object value) {
    string password = (string)value;
    if (String.IsNullOrEmpty(password))
        return String.Empty;
    else
        return new String('*', password.Length);
}

Windows는이를 지원하지 않지만 "암호 문자"라고 부르는 "암호 문자"는 실제로 유니 코드 숯이므로 자체 시스템을 구축 할 수 있습니다. ListView를 상속하는 것과 같은 것은 개인 필드에 실제 텍스트를 유지하고 셀의 텍스트를 그 점으로 바꾸십시오.

나는 ListView와 ListViewItem의 전체 구조를 정확히 기억하지 못하거나 ...이 무엇인지 ...하지만 적어도 ListView를 상속 받고, ListViewItem을 상속하고, 상속하는 많은 재정의 및 숨기기가 필요할 것입니다.

나는 당신이 당신 자신으로 이것을 할 수 있다고 생각합니다. 그렇지 않다면 질문을 편집하십시오 :)

출력 필드 인 경우 필드를 채우면 '*'로 변경됩니다. 사용자가 입력하는 사람이라면 키 다운 이벤트에 첨부하고 대체해야합니다.

실제 비밀번호를 사용하려면 현장의 실제 값이 무엇인지 알 수 있도록 맵 역할을하려면 하나 이상의 다른 필드 (사용자 이름, 사용자 ID 등 ...)를 식별해야합니다. 해시 가능한 물체로 그렇게 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top