以下代码使DataGridView Column4仅接受数字值和一个小数点.,并且可以正常工作,例如接受(4.50,3.00,13.60)

但是问题是:我仍然可以自己在单元格中保存一个小数点(没有任何数字,只有小数点),并且我不希望该单元格只有小数点,因为sql数据库(money列)不只接受小数点。

谁知道如何防止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;
        }



    }

最佳答案

将功能更改为:

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



    }

关于c# - 如何使某些datagridview列仅接受C#中的数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35341869/

10-13 05:13