You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Visual Studio中点击DataGridView单元格显示已掩码密码

实现DataGridView点击单元格显示原密码的完整方案

嘿,你已经通过CellFormatting事件搞定了密码掩码的基础效果,思路完全没问题!要实现点击单元格时显示原始密码,确实得借助CellClick事件,不过还要搭配一个离开单元格时的事件来重新隐藏密码,不然密码会一直暴露,我给你详细说操作步骤:

第一步:实现CellClick事件显示原始密码

你之前已经把原始密码存在了行的Tag属性里,这一步就派上用场了。当用户点击密码列(索引为5)的单元格时,我们把单元格的Value重新设置为Tag里存的原始密码,还要刷新单元格确保显示更新:

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
    // 排除表头行,只处理密码列的单元格
    if (e.ColumnIndex == 5 && e.RowIndex >= 0)
    {
        var originalPassword = dataGridView.Rows[e.RowIndex].Tag?.ToString();
        if (!string.IsNullOrEmpty(originalPassword))
        {
            // 给单元格赋值原始密码
            dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = originalPassword;
            // 刷新编辑状态确保显示立即更新
            dataGridView.RefreshEdit();
        }
    }
}

第二步:实现CellLeave事件重新隐藏密码

光显示还不够,当用户点击其他单元格或者离开当前密码单元格时,得把密码重新掩码回去,不然安全性就没了。这里用CellLeave事件最合适:

private void dataGridView_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 5 && e.RowIndex >= 0)
    {
        var originalPassword = dataGridView.Rows[e.RowIndex].Tag?.ToString();
        if (!string.IsNullOrEmpty(originalPassword))
        {
            // 重新设置为掩码字符
            dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = new string('●', originalPassword.Length);
        }
    }
}

额外注意:处理密码编辑后的同步

如果你的DataGridView允许编辑密码单元格,记得在编辑完成后更新Tag里的内容,不然修改后的密码会变回原来的旧值。可以加一个CellEndEdit事件:

private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 5 && e.RowIndex >= 0)
    {
        var newPassword = dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value?.ToString();
        // 更新Tag为新密码,保证后续掩码和显示都用最新值
        dataGridView.Rows[e.RowIndex].Tag = newPassword;
    }
}

最后一步:绑定事件

别忘了在Visual Studio里把这三个事件和你的DataGridView关联起来:

  • 选中DataGridView控件,打开属性窗口(按F4)
  • 切换到事件标签(闪电图标)
  • 找到CellClick、CellLeave、CellEndEdit,分别双击对应的事件栏,VS会自动帮你生成事件方法的框架,然后把上面的代码粘进去就行。

内容的提问来源于stack exchange,提问作者Ezz Redfox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:45:04