2012-09-25 123 views
5

我想在datagridview中显示一列作为包含密码字符的列。我无法弄清楚为什么这个事件不是由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); 
      } 
     } 
    } 

请帮忙。

+0

您是否尝试过重新连接事件?请再检查一次,然后再检查它是否有效。 –

+0

@ arjunshetty2020我不明白你的意思是再次绑定这个.. –

+0

抱歉。我的意思是删除事件并从头再创建它 –

回答

6

您可以处理EditingControlShowing事件,然后将编辑控件转换为文本框并手动将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; 
    } 
    } 
} 
+0

纠正我,如果我错了,但我的'e'没有'ColumnIndex'属性。 – Disasterkid

+1

你可以写if(grid.CurrentCell.ColumnIndex == 3而不是if(e.ColumnIndex == 3) –

相关问题