2012-09-25 9 views
5

Chciałbym wyświetlić kolumnę w datagridview jako kolumna, która zawiera znaki hasła. Nie mogę dowiedzieć się, dlaczego to zdarzenie nie jest wywoływane przez datagridview.Wyświetl kolumnę w DataGridView jako typ wprowadzania hasła

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

Proszę o pomoc.

+0

Czy próbowałeś ponownie zainstalować wydarzenie? Sprawdź, czy to działa, gdy najpierw ponownie to powiążesz. –

+0

@ arjunshetty2020 Nie rozumiem, co masz na myśli, wiążąc to od początku. –

+0

Przepraszam za to. Chciałem usunąć wydarzenie i stworzyć je ponownie od nowa. –

Odpowiedz

6

Możesz obsłużyć zdarzenie EditingControlShowing, a następnie przesłać kontrolę edycji do TextBox i ręcznie ustawić wartość UseSystemPasswordChar na 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

Popraw mnie, jeśli się mylę, ale moje 'e' nie ma właściwości' ColumnIndex'. – Disasterkid

+1

można napisać, jeśli (grid.CurrentCell.ColumnIndex == 3 zamiast if (e.ColumnIndex == 3) –

Powiązane problemy