Как скрыть значения в сетке данных?

У меня есть столбец SSN в сетке данных, и я хочу замаскировать его, как *****1234 это. Но когда пользователь вводит тип SSN, он не должен его маскировать. Есть ли способ замаскировать ячейку в сетке данных.


person younus    schedule 03.02.2015    source источник
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
comment
Вы не теряете ценность таким образом? - person Gábor Angyal; 03.02.2015
comment
Нет. А когда начинаешь редактировать ячейку, показывается реальное значение. - person Bioukh; 03.02.2015
comment
О, вы обрабатываете событие CellFormatting. Прохладный! Я этого не знал. - person Gábor Angyal; 03.02.2015
comment
В какой версии это событие доступно, я его не вижу. - person younus; 03.02.2015
comment
Это событие доступно в представлении сетки данных, а не в сетке данных. - person younus; 03.02.2015