How can I restrict a user to entering only numeric values in a specific cell in a DataGridView column?

前端 未结 3 1923
没有蜡笔的小新
没有蜡笔的小新 2021-01-22 21:30

I have a DataGridView control in which I want to restrict the user to entering only numeric values for a cell under a particular column. How can I accomplish this t

3条回答
  •  误落风尘
    2021-01-22 22:05

    • Add an event of EditingControlShowing
    • In EditingControlShowing, check that if the current cell lies in the desired column.
    • Register a new event of KeyPress in EditingControlShowing(if above condition is true).
    • Remove any KeyPress event added previously in EditingControlShowing.
    • In KeyPress event, check that if key is not digit then cancel the input.

    Example:

    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;
                }
            }
    

提交回复
热议问题