fat*_*fat 7 c# regex datagridview input winforms
是否可以DataGridView通过RegEx?限制用户对单元格的输入?例如,将单元格输入的设置格式设置为此类[0-9]{2}禁止用户输入除2位数之外的其他内容.
更新
对不起,我不是很清楚.我知道CellValidation事件,我可以在用户输入后检查输入的值.但我想知道我是否可以在此事件之前阻止错误的用户输入.我的意思是用户在单元正则表达式时不能输入字母[0-9].有可能吗?
如果要在键入时阻止无效值,则可以处理该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)