【发布时间】:2018-05-23 05:54:37
【问题描述】:
我已使用以下代码在 datagridview 中屏蔽我的密码,并且我成功地做到了。
private void gvInstanceDetails_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 4)
{
if (e.Value != null)
{
gvInstanceDetails.Rows[e.RowIndex].Tag = e.Value;
e.Value = new string('\u2022', e.Value.ToString().Length);
}
}
}
private void gvInstanceDetails_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
TextBox t = e.Control as TextBox;
if (t != null)
{
t.UseSystemPasswordChar = true;
}
}
一旦我屏蔽,如果用户没有删除整个文本并重新输入密码,我将无法检索用户在密码字段中输入的值。
例如: - 如果密码类似于 ***** 并且用户替换最后两个字符并输入 34,那么在保存时我将字符串保存为 ***34。
谢谢
【问题讨论】:
-
建议:不要将密码存储为纯文本!
-
我建议您使用these dedicated classes 将此功能添加到您的网格中。我前段时间创建了它们,但是在刚刚测试它们时,我意识到它们遇到了您要修复的相同错误。我通过更改
DataGridViewPasswordTextBoxCell.InitializeEditingControl方法的第一行来解决这个问题。 -
请注意,这些自定义列和单元格类可以简单地添加到您的项目中,然后您可以像添加任何其他列一样将密码列添加到网格中。然后,您只需将列的
UseSystemPasswordChar属性设置为True即可。
标签: c# .net winforms datagridview