0

对于文本框,我有一个像这样的数据验证方法:

string allowedCharacterSet = "1234567890\b\n";

if (allowedCharacterSet.Contains(e.KeyChar.ToString()) == false)
{
        e.Handled = true;
}

它的工作方式是,如果用户键入的字符不在 allowedCharacterSet 中,则该字符不会出现在文本框中,从而防止他们输入无效数据。

我的问题是:如何将其应用于 DataGridView?假设我有 3 个单元格 - 第一个单元格是名称,所以我只想要字母表。第二个是数量整数,所以只是数字。第三个是电子邮件地址,所以我在 allowedCharacterSet 字符串中包含数字、字母、句点和 @ 符号。这些事情我可以很容易地完成,但是由于您不能将 KeyPress 事件附加到单个 DataGridView 单元格,所以我不确定该怎么做。

4

1 回答 1

0

您必须在 DataGridView 单元格验证事件中应用它。下面是我做的一些示例,用于将值限制在 0-100 之间。您可以编辑验证。

// validation on dgvLotDetail's Yield Column (only numeric and between 0 to 100 allowed)
    private void dgvLotDetail_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        if (dgvLotDetail.Rows[e.RowIndex].Cells[txtYield.Index].Value != null)
        {
            if (e.ColumnIndex == txtYield.Index)
            {
                int i;
                if ( !int.TryParse(Convert.ToString(e.FormattedValue), out i) ||
                    i < 0 ||
                    i > 100 )
                {
                    e.Cancel = true;
                    MessageBox.Show("Enter only integer between 0 and 100.");
                }
                else
                {
                }
            }
        }
    }
于 2014-05-09T07:19:56.520 回答