在winform中使用datagrid有很大的便利,就是操作数据库时,添加,删除,修改不需要再做页面了,哈哈,真是省了不少事,但是使用过程中发现问题了,用户选择了已有的数据行时,按钮添加也是可用的,这是不行的,怎么能让用户添加已有数据呢,在由主键约束的前提下程序会出错的,
正确的思路应该是:点击已有数据行时只允许修改和删除,不可以添加,点击空白行时只运行添加,不允许删除和修改,那问题是如何来判断用户点击的是空白行呢,按钮是否可用的判断代码放在哪里呢?
解决方法:给datagrid添加mouse_enter事件
- this.userInfo.MouseEnter += new EventHandler(userInfo_MouseEnter);
- private void userInfo_MouseEnter(object sender,System.EventArgs e) {
- int row = userInfo.CurrentCell .RowNumber;
- if(row == list.Size) //list 是我用来存放数据表的对象集合, {
- menu.MenuItems[0].Enabled = true;
- }
- else
- {
- menu.MenuItems[0].Enabled = false;
- }
- //才代码适用于DataGrid。MouseMove事件,通过按钮移动来确定当前的行
- //System.Drawing.Point pt = new Point(e.X,e.Y);
- //DataGrid.HitTestInfo hti = userInfo.HitTest(pt);
- // if(hti.Type == DataGrid.HitTestType.Cell)
- // {
- // if(hti.Row == list.Size)
- // {
- // menu.MenuItems[0].Enabled = true;
- // }
- // else
- // {
- // menu.MenuItems[0].Enabled = false;
- // }
- // }
- }
就这样