C # - преобразовать текст в столбце ListView в символы пароля - PullRequest
1 голос
/ 22 октября 2009

Есть ли способы преобразовать текст, который находится в определенном столбце элемента управления списком в символы пароля? Спасибо.

Ответы [ 4 ]

4 голосов
/ 22 октября 2009

Используйте ObjectListView (обертка с открытым исходным кодом вокруг .NET WinForms ListView). Это делает почти все в ListView гораздо менее болезненным - иногда даже забавным.

В этом случае вы должны использовать делегат AspectToStringConverter, который отвечает за преобразование значения в строку, которую вы хотите отобразить в ListView:

this.olv1.passwordColumn.AspectToStringConverter = delegate(object value) {
    string password = (string)value;
    if (String.IsNullOrEmpty(password))
        return String.Empty;
    else
        return new String('*', password.Length);
}
3 голосов
/ 22 октября 2009

Я бы сохранил фактические данные (в данном случае пароль) в свойстве Tag ListViewItem. Затем вы можете поместить все, что вам нравится в текстовом поле. Этот шаблон в целом хорошо работает для связывания объектов с элементами в других типах элементов управления списком / сеткой.

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

listView.Items.Add(lvi);
0 голосов
/ 22 октября 2009

Если это поле вывода, вы просто изменяете его на '*', когда заполняете поле. Если это тот, который вводит пользователь, вам нужно присоединиться к событию keydown и сделать там замену.

Вам нужно будет указать хотя бы одно другое поле (Имя пользователя, Идентификатор пользователя, что угодно ...), чтобы действовать как карта, чтобы вы знали, каково реальное значение в поле, если вы хотите использовать фактическое пароль. Вы можете сделать это с помощью объекта Hashtable.

0 голосов
/ 22 октября 2009

Windows не поддерживает его, но эти «символы паролей», как вы их называете, на самом деле являются символами Юникода, так что вы можете создать свою собственную систему для этого. Что-то вроде наследования ListView, затем сохраните в приватном поле реальный текст и замените текст ячейки этими точками.

Я точно не помню всю структуру ListView и ListViewItem, или что бы то ни было ... но вам, вероятно, потребуется много переопределять и скрывать, наследуя по крайней мере ListView, а может быть ListViewItem хорошо.

Я думаю, вам удастся сделать это самостоятельно. Если нет, отредактируйте свой вопрос:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...