У меня есть столбец SSN в сетке данных, и я хочу замаскировать его, как *****1234
это. Но когда пользователь вводит тип SSN, он не должен его маскировать. Есть ли способ замаскировать ячейку в сетке данных.
Как скрыть значения в сетке данных?
comment
Значит, эти ячейки сетки данных должны быть редактируемыми?
- person PlaceUserNameHere   schedule 03.02.2015
comment
Да, это должно быть редактируемым.
- person younus   schedule 03.02.2015
Ответы (2)
Я знаю только один способ сделать это, хотя может быть и проще*. Вы можете разместить настраиваемый элемент управления редактированием в своих ячейках datagridview. Этот контур появляется только тогда, когда вы редактируете ячейку, в противном случае значение ячейки видно. Подробнее об этом можно прочитать здесь:
https://msdn.microsoft.com/en-us/library/7tas5c80.aspx
Вы можете реализовать это таким образом, чтобы сама ячейка содержала только замаскированное значение, а элемент управления редактированием содержал полное значение.
* Действительно есть более простой вариант, см. Винсента ответ.
person
Gábor Angyal
schedule
03.02.2015
Вы можете сделать это, создав обработчик события CellFormatting
события DataGridView
. Например вот так:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.Value != null && e.Value.ToString() != "SSN")
{
if (!(dataGridView1.CurrentCell != null && dataGridView1.IsCurrentCellInEditMode && dataGridView1.CurrentCell.RowIndex == e.RowIndex && dataGridView1.CurrentCell.ColumnIndex == e.ColumnIndex))
{
e.Value = "****1234";
e.FormattingApplied = true;
}
}
}
person
Bioukh
schedule
03.02.2015
Вы не теряете ценность таким образом?
- person Gábor Angyal; 03.02.2015
Нет. А когда начинаешь редактировать ячейку, показывается реальное значение.
- person Bioukh; 03.02.2015
О, вы обрабатываете событие
CellFormatting
. Прохладный! Я этого не знал.
- person Gábor Angyal; 03.02.2015
В какой версии это событие доступно, я его не вижу.
- person younus; 03.02.2015
От 2.0 до 4.6. Источник а>.
- person Bioukh; 03.02.2015
Это событие доступно в представлении сетки данных, а не в сетке данных.
- person younus; 03.02.2015