c# DataGridViev文本框验证

本文关键字:验证 文本 DataGridViev | 更新日期: 2023-09-27 17:51:03

我试图验证任何DataGridView中的任何文本框,如果它已经包含.

我得到这个代码,它给了我InvalidCastException

知道怎么去吗?

if (((DataGridTextBox)sender).Text.Contains(".") & e.KeyChar == '.')
{
    e.Handled = true;
}

c# DataGridViev文本框验证

很可能你的"sender"不是DataGridTextBox类型。您可以使用下面的代码进行检查:

DataGridTextBox dataGridTextBox = sender as DataGridTextBox;
        if (dataGridTextBox != null)
        {
            //It's DataGridTextBox
        }
        else
        {
            //It isn't DataGridTextBox
        }

所以,你应该知道你的"sender"的类型,来做验证。

我通过为DataGridView添加" editingconrolshow "事件和以下代码解决了这个问题:

private void datagridview1_editingcontrolshow (object sender, DataGridViewEditingControlShowingEventArgs e)//这是允许在所有数据格中只有一个点作为小数位的数字{e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress);

            TextBox tb = e.Control as TextBox;
            if (tb != null)
            {
                tb.KeyPress += new KeyPressEventHandler(Column1_KeyPress);
            }
    }
    private void Column1_KeyPress(object sender, KeyPressEventArgs e) //This is to allow nubers with one dot as decimal place only in all datagrids
    {
        if (!char.IsNumber(e.KeyChar) & (Keys)e.KeyChar != Keys.Back & e.KeyChar != '.')
        {
            e.Handled = true;
        }
        if (((TextBox)sender).Text.Contains(".") & e.KeyChar == '.')
        {
            e.Handled = true;
        }
    }