DataGridView限制用户输入

fat*_*fat 7 c# regex datagridview input winforms

是否可以DataGridView通过RegEx?限制用户对单元格的输入?例如,将单元格输入的设置格式设置为此类[0-9]{2}禁止用户输入除2位数之外的其他内容.

更新 对不起,我不是很清楚.我知道CellValidation事件,我可以在用户输入后检查输入的值.但我想知道我是否可以此事件之前阻止错误的用户输入.我的意思是用户在单元正则表达式时不能输入字母[0-9].有可能吗?

Jos*_*irn 8

如果要在键入时阻止无效值,则可以处理该EditingControl.KeyPress事件.示例代码如下.但是,您必须修改正则表达式以允许不完整的值.并且您仍应使用正确的验证,因为还有其他方法可以将数据导入网格(例如复制粘贴).

    private string pattern = "^[0-9]{0,2}$";

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        dataGridView1.EditingControl.KeyPress -= EditingControl_KeyPress;
        dataGridView1.EditingControl.KeyPress += EditingControl_KeyPress;
    }

    private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar))
        {
            Control editingControl = (Control)sender;
            if (!Regex.IsMatch(editingControl.Text + e.KeyChar, pattern))
                e.Handled = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)