有没有办法将listview控件的特定列中的文本转换为密码字符?谢谢。
答案 0 :(得分:4)
使用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);
}
答案 1 :(得分:3)
我会将实际数据(在这种情况下为密码)存储在ListViewItem的Tag属性中。然后你可以在文本字段中放置任何你喜欢的内容。此模式通常适用于将对象与其他类型的列表/网格控件中的项相关联。
String password = "MyPassword";
ListViewItem lvi = new ListViewItem("********");
lvi.Tag = password;
listView.Items.Add(lvi);
答案 2 :(得分:0)
Windows不支持它,但是你所称的那些“密码字符”实际上是一个unicode char,所以你可以为它构建自己的系统。 像继承ListView,然后在私有字段中保存真实文本,并用这些点替换单元格的文本。
我并不完全记得ListView和ListViewItem的整个结构,或者它是什么......但是你可能需要做很多重写和隐藏,至少包含ListView,也许ListViewItem为好。
我想你会自己做到这一点。如果没有,请编辑您的问题:)
答案 3 :(得分:0)
如果它是输出字段,则在填充字段时只需将更改设置为“*”。如果是用户正在输入的那个,则需要附加到keydown事件并在那里进行替换。
您需要至少识别一个其他字段(用户名,用户ID,等等......)作为地图,以便您知道字段中的实际值是什么,如果您想要使用实际值密码。你可以使用Hashtable对象来做到这一点。