以下代码使DataGridView
Column4
仅接受数值和一个小数点.
,并且它可以正常工作,例如它接受诸如(4.50,3.00,13.60)之类的值< / p>
但问题是:我仍然可以在单元格内单独保存一个小数点(没有任何数字只是小数点)我不希望单元格只有十进制点,因为sql数据库(钱列)做不接受只有小数点。
任何人都知道如何阻止Column4
中的单元格不接受小数点但接受如下的值:(4.50,3.00,13.60)?
请帮忙谢谢
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress -= new KeyPressEventHandler(AnyColumnKeyPress);
if (dataGridView1.CurrentCell.ColumnIndex == 4 ) //Desired Column
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.KeyPress += new KeyPressEventHandler(AnyColumnKeyPress);
}
}
}
private void AnyColumnKeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
// allow 1 dot:
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
答案 0 :(得分:1)
将您的功能更改为:
private void AnyColumnKeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
// allow 1 dot:
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
if ( (sender as TextBox).Text != "." ) {
e.Handled = true;
}
}
}
答案 1 :(得分:0)
检查了上面的代码,我仍然可以输入一个点字符,稍微修改它以便我更具可读性。
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)) || e.KeyChar == '.')
{
e.Handled = true;
}
经过测试,我只能输入数字。