ایجاد ستون عددی در DataGridView

فرض می کنیم که دیتاگرید برنامه ما دارای دو ستون به نام های Column1 و Column2 می باشد :
create-a-numeric-column-in-the-datagridview-csharp-01

و ما می خواهیم که ستون اول یعنی Column1 فقط عدد دریافت کند، در رویداد EditingControlShowing و Kepress ستون مورد نظر کدهای زیر را می نویسیم :

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress);
    if (dataGridView1.CurrentCell.ColumnIndex == 0) //Desired Column
    {
        TextBox textBox1 = e.Control as TextBox;
        if (textBox1 != null)
        {
            textBox1.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;
    }
}

به این نکته توجه کنید که یک ستون(در ایم مثال Column1) به تنهایی دارای رویداد Keypress نیست و ما در خط 3 برای آن ایجاد کرده ایم.