将DataGridView中的列显示为密码输入类型

Emi*_*azu 5 c# datagridview winforms

我想在datagridview中显示一列作为包含密码字符的列.我无法弄清楚为什么datagridview不会触发此事件.

    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if(e.ColumnIndex == 3)
        {
            if(e.Value != null)
            {
                e.Value = new string('*', e.Value.ToString().Length);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

请帮忙.

Agh*_*oub 6

您可以处理该EditingControlShowing事件,然后将编辑控件转换为TextBox并手动将UseSystemPasswordChar设置为true.

private void dataGridView1_EditingControlShowing(object sender, 
    DataGridViewEditingControlShowingEventArgs e)
{
    if(e.ColumnIndex == 3)//select target column
    {
    TextBox textBox = e.Control as TextBox;
    if (textBox != null)
    {
        textBox.UseSystemPasswordChar = true;
    }
    }
}   
Run Code Online (Sandbox Code Playgroud)

  • 您可以编写if(grid.CurrentCell.ColumnIndex == 3而不是if(e.ColumnIndex == 3) (2认同)