DataGridView 单元格验证(只允许输入数字)

作者:袖梨 2022-06-25

比如只允许输入数字

要求:验证错误后焦点不离开 

有两种方法:

datagridview.editingcontrolshowing 事件和datagridview.cellvalidating 事件。

(1) datagridview.editingcontrolshowing 事件。

显示用于编辑单元格的控件时发生,命名空间: system.windows.forms

程序集: system.windows.forms(在 system.windows.forms.dll 中)。

如:

void dgvcs_editingcontrolshowing(object sender, datagridvieweditingcontrolshowingeventargs e)

        {

            e.cellstyle.backcolor = color.aquamarine;//设置编译时的颜色

            control = new textbox();

            control = (textbox)e.control;

            control.keypress += new keypresseventhandler(txt_keypress);//

        }

然后在txt_keypress这里进行验证。 

(2) datagridview.cellvalidating 事件。

在单元格失去输入焦点时发生,并启用内容验证功能。命名空间: system.windows.form,程序集: system.windows.forms(在 system.windows

.forms.dll 中)

备注:

验证不通过时调用e.cancel = true,终止事件链,单元格将保持编辑状态。

调用dgv_details.canceledit();可以使单元格的内容会滚到修改前的值。

使用system.windows.forms.sendkeys.send("^a");将全选单元格的内容。

如:

void dgv_cellvalidating(object sender, datagridviewcellvalidatingeventargs e)

        {

                decimal tmp = 0.0m;

                if (!decimal.tryparse(e.formattedvalue.tostring(), out tmp))//是否是数字

                {

                    if (e.formattedvalue != null && e.formattedvalue.tostring().length != 0)

                    {

                       devcomponents.dotnetbar.messageboxex.show("请输入有效数字!", "提示");

                       e.cancel = true;

                    }

                }

         }

这两种方法都能验证。第一种方法当按键按下时(即当编译时)就去验证,而第二种方法是当焦点离开单元格编译区域时触发。所以个人感觉第一种方法更优一点。

 

相关文章

精彩推荐