【发布时间】:2020-02-21 11:13:50
【问题描述】:
目标:
我的目标是将 1 列格式化为密码字符 *。
我尝试过的资源:
我在这里使用了一个例子:
并在这里尝试了这个答案:
https://stackoverflow.com/a/38074239/12485722
这是我当前加载 DataGrid 视图的代码:
private void Form3_Load(object sender, EventArgs e)
{
RefreshGrid();
}
//Refresh Data Grid from external Forms
public void RefreshGrid()
{
// MySQL connection string
using (var conn = new MySqlConnection(ConnectionString()))
{
using (var mySqlDataAdapter = new MySqlDataAdapter("select * from user", conn))
{
using (var dataSet = new DataSet())
{
DataSet DS = new DataSet();
mySqlDataAdapter.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
}
}
}
}
这只是使用用户名和密码加载 DataGridView。
现在我需要将第二列格式化为密码字符,因此密码不会显示为文本,而是格式化为*。
我已经尝试从上面提到的第二个资源中添加这段代码:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 1 && e.Value != null)
{
e.Value = new String('*', e.Value.ToString().Length);
}
}
这不起作用 - 没有显示错误,但我注意到此引用设置为 0。
(注意:应该是这样的)
问题:
我很困惑哪里出了问题..有人可以帮助我完成这项任务吗?
更新 (1) - 未显示事件和单元格格式:
【问题讨论】:
-
您必须处理 EditingControlShowing 事件,在此事件中将 e.Control 项的属性“UseSystemPasswordChar”(例如,您可以将其转换为 TextBox)设置为“true”。
-
关于缺乏参考:您是否添加了事件方法以在正确的事件名称中启动 gridview?在设计器中检查它,可能它没有连接到属性>事件>CellFormatting,你应该有值 dataGridView1_CellFormatting:。它应该保存在 Designer.cs 文件中,这是您的 Form 的部分类。
-
@BartoszOlchowik 属性中没有事件,单元格格式也是如此。我也注意到了这一点。我有点困惑为什么它没有出现
-
事件和方法之间的连接保存在表单的designer.cs文件中,它是表单的部分类。一切都应该保存在这两个文件中,但是您不应该手动修改designer.cs文件,设计师已经为您完成了。
-
点击黄色照明螺栓显示事件
标签: c#