winform的datagridview单元格输入限制

在datagridview的EditingControlShowing事件里面添加代码:

if (this.dgv_pch.Columns[dgv_pch.CurrentCell.ColumnIndex].HeaderText == "批内序号")//判断是哪列的单元格需要限制
{
(dgv_pch.Columns[dgv_pch.CurrentCell.ColumnIndex] as DataGridViewTextBoxColumn).MaxInputLength = 4;//限制只能输入内容长度为4
e.Control.KeyPress += new KeyPressEventHandler(EditingControl_KeyPress);//限制只能输入数字
//e.Control.KeyPress -= new KeyPressEventHandler(EditingControl_KeyPress);
}

private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
{
if (Convert.ToInt32(e.KeyChar) == 8)
{
e.Handled = false;
}
else
{
Regex numRegex = new Regex(@"^(-?[0-9])$"); // 匹配正则表达式
Match result = numRegex.Match(Convert.ToString(e.KeyChar));
if (result.Success) // 输入的不是数字
{
e.Handled = false; // textBox内容不变
}
else
{
e.Handled = true; // 将现在textBox的值保存下来
}
}
}

时间: 2024-12-29 23:53:48

winform的datagridview单元格输入限制的相关文章

WinForm - 格式化DataGridView单元格数据

效果: 代码: /// <summary> /// 格式化数据 /// </summary> private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == 3 ) //哪一列 { if (Convert.ToInt32(e.Value) == 1) { e.Value="存在维修记录,双击查看!&q

WinForm中DataGridView验证单元格输入的是数字

转载:http://www.cnblogs.com/ganqiyin/archive/2013/02/18/2915491.html 事件:DataGridView验证单元格输入的是数字,DataGridView源数据是从数据库读取的. 需求:当用户输入的不是数字的时候需要提示信息(数据是直接绑定数据库的,因此dataGridView有自己的报错功能,我们需要屏蔽掉它,显示自己的错误提示!) 实现: 选择DataGridView的CellValidating事件 (1)  验证整数: 1 pri

DataGridView单元格合并

本文章转载:http://www.cnblogs.com/xiaofengfeng/p/3382094.html 图: 代码就是如此简单 文件下载:DataGridView单元格合并源码

DataGridView单元格显示GIF图片

本文转载:http://home.cnblogs.com/group/topic/40730.html DataGridView单元格显示GIF图片 gifanimationindatagrid.rar 4.自定义显示DataGridView列(行头显示行号与图标,同一单元格显示图片也显示文字)TestDataGridViewRowStyle2.rar

2014-07-30 DataGridView单元格ComboBox控件Index

项目是在DataGridView单元格中搞得ComboBox控件. 而且要根据ComboBox对应的不同选项,来确定界面上的另一个ComboBox控件是否可用. 这样问题就出来了: DataGridView中的ComboBox是没有事件的! 当更改了Combox中的值以后,必须用鼠标点一下别的地方(鼠标离开此单元格),才会走CellValueChanged事件...... 研究+百度了好久,都不行,终于在中午灵光一闪,搞定了! 思路就是把这个没有事件的单元格,变成有事件的控件: 1 //定义全局

Winfrom设置DataGridView单元格获得焦点(DataGridView - CurrentCell)

设置DataGridView单元格获得焦点 1 this.dgv_prescription.CurrentCell = this.dgv_prescription.Rows["行号"].Cells["列号/列Name属性"]; 2 this.dgv_prescription.BeginEdit(true);

自定义控件:DataGridView 单元格合并和二维表头

DataGridView单元格合并和二维表头应用: //DataGridView绑定数据 DataTable dt = new DataTable(); dt.Columns.Add("1"); dt.Columns.Add("2"); dt.Columns.Add("3"); dt.Columns.Add("4"); dt.Rows.Add("中国", "上海", "5000

验证DataGridView单元格的值

private void gridPurchaseOrderDetail_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (gridPurchaseOrderDetail.Columns[e.ColumnIndex].CellType.ToString().Contains("TextBox")) { if (Common.GetDecimal(e.FormattedValue) <

如何实时获取DBGrid 中当前单元格输入的内容?

如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理, 用什么事件呢? 所以Field的Onchange事件是没用的. 这个问题简单啊,每输入1个数据的后就提交(并不是提交到数据库,还是在编辑状态),那么用DataSet就可以取值了 用DBGrid的KeyUp事件: procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;   Shift: TShiftState); beg