2012-09-25 21 views
5

Me gustaría mostrar una columna en una vista de tabla de datos como una columna que contiene caracteres de contraseña. No puedo entender por qué este evento no se desencadena por la vista de tabla de datos.Mostrar columna en DataGridView como entrada de contraseña tipo

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

Ayuda por favor.

+0

¿Has intentado volver a cablear el evento? Por favor, compruebe si funciona al vincular esto desde el principio otra vez. –

+0

@ arjunshetty2020 no entiendo a qué te refieres con vincular esto desde el principio otra vez .. –

+0

perdón por eso. Me refería a eliminar el evento y crearlo desde el principio otra vez –

Respuesta

6

Puede manejar el evento EditingControlShowing y luego lanzar el control de edición a un TextBox y establecer manualmente UseSystemPasswordChar en verdadero.

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

Corrígeme si me equivoco pero mi 'e' no tiene una propiedad' ColumnIndex'. – Disasterkid

+1

podría escribir if (grid.CurrentCell.ColumnIndex == 3 en lugar de if (e.ColumnIndex == 3) –

Cuestiones relacionadas