Как можно ограничить пользователя вводом только числовых значений в определенной ячейке в столбце DataGridView? - PullRequest
2 голосов
/ 08 июня 2009

У меня есть элемент управления DataGridView, в котором я хочу ограничить ввод пользователем только числовых значений для ячейки в определенном столбце. Как я могу выполнить этот тип проверки в DataGridView ячейках?

Это возможно, когда я создаю простое текстовое поле, но как я могу проверить ячейку DataGridView?

Ответы [ 3 ]

1 голос
/ 12 июня 2009

Использование cellValidating событие:

Grid.CellValidating += new DataGridViewCellValidatingEventHandler(Grid_CellValidating);

Grid_CellValidating(object sender, args)
{
XXXX
}
1 голос
/ 01 февраля 2013
  • Добавить событие EditingControlShowing
  • В EditingControlShowing убедитесь, что текущая ячейка находится в нужном столбце.
  • Зарегистрируйте новое событие KeyPress в EditingControlShowing (если указанное выше условие истинно).
  • Удалите все события KeyPress, добавленные ранее в EditingControlShowing.
  • В событии KeyPress убедитесь, что если ключ не является цифрой, отмените ввод.

Пример:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress);
            if (dataGridView1.CurrentCell.ColumnIndex == 0) //Desired Column
            {
                TextBox tb = e.Control as TextBox;
                if (tb != null)
                {
                    tb.KeyPress += new KeyPressEventHandler(Column1_KeyPress);
                }
            }
        }

private void Column1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsControl(e.KeyChar)
                && !char.IsDigit(e.KeyChar))
            {
                e.Handled = true;
            }
        }
1 голос
/ 08 июня 2009

Вы можете установить тип данных, которые будет содержать столбец, как показано в следующем фрагменте кода:

var columnSpec = new DataColumn();
columnSpec.DataType = <your type>
// Other initialisation
dataTable.Columns.Add(columnSpec);

dataGridView.DataSource = dataTable;

Если вы работаете непосредственно с DataGridView, тогда класс DataGridViewColumn имеет следующее свойство:

ValueType - получает или задает тип данных значений в ячейках столбца.

Если вы создаете столбцы, используя этот класс, а не более специализированные классы DataGridViewCheckBoxColumn и т. Д., Возможно, вы захотите этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...