c# DataGridViev文本框验证
本文关键字:验证 文本 DataGridViev | 更新日期: 2023-09-27 17:51:03
我试图验证任何DataGridView中的任何文本框,如果它已经包含.
我得到这个代码,它给了我InvalidCastException
。
知道怎么去吗?
if (((DataGridTextBox)sender).Text.Contains(".") & e.KeyChar == '.')
{
e.Handled = true;
}
很可能你的"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;
}
}