2012-09-25 37 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) –