DataGridView日期匹配今日时触发提示锁控件及求和存储实现问询
实现方案
1. 新增隐藏列Patient Renewal
在窗体初始化或DataGridView数据绑定前添加该隐藏列,代码如下:
// 窗体Load事件中添加逻辑 private void Form1_Load(object sender, EventArgs e) { DataGridViewTextBoxColumn renewalCol = new DataGridViewTextBoxColumn(); renewalCol.Name = "Patient Renewal"; renewalCol.HeaderText = "Patient Renewal"; renewalCol.Visible = false; // 设置为隐藏状态 DGVPatient.Columns.Add(renewalCol); // 其余原有数据绑定逻辑... }
2. 绑定选中行变更事件
给DGVPatient绑定SelectionChanged事件,所有核心逻辑都在该事件中实现,同时增加边界校验避免程序崩溃:
private void DGVPatient_SelectionChanged(object sender, EventArgs e) { // 无选中行时直接返回 if (DGVPatient.SelectedRows.Count == 0) return; DataGridViewRow selectedRow = DGVPatient.SelectedRows[0]; // -------------------------- // 第一部分:数值计算与存储 // -------------------------- int originalValue = 0; int inputValue = 0; // 校验数值合法性,避免格式错误抛出异常 if (selectedRow.Cells[7].Value != null && int.TryParse(selectedRow.Cells[7].Value.ToString(), out originalValue) && int.TryParse(TxtEntry.Text, out inputValue)) { int sumResult = originalValue + inputValue; // 计算结果存入隐藏列 selectedRow.Cells["Patient Renewal"].Value = sumResult; } else { // 可选:数值不合法时的提示逻辑 // MessageBox.Show("输入值或原始数据不是合法数字,请检查"); return; } // -------------------------- // 第二部分:日期校验与控件锁定 // -------------------------- // 优先转DateTime类型对比,避免直接ToString因格式差异导致判断错误 if (selectedRow.Cells["Entry Date"].Value != null && DateTime.TryParse(selectedRow.Cells["Entry Date"].Value.ToString(), out DateTime entryDate)) { if (entryDate.Date == DateTime.Today.Date) { // 弹出警告 MessageBox.Show("当前选中患者的登记日期为今日,所有操作已锁定", "操作警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); // 调用方法锁定所有控件 LockAllControls(this); } } }
3. 补充控件锁定通用方法
新增递归方法处理容器内所有子控件的锁定逻辑:
private void LockAllControls(Control parent) { foreach (Control ctl in parent.Controls) { ctl.Enabled = false; // 如果是Panel、GroupBox等容器控件,递归处理内部子控件 if (ctl.HasChildren) { LockAllControls(ctl); } } }
注意事项:
- 列索引
7请确认和你实际的列顺序一致,避免取错数据- 后续需要解锁控件时,可对应写
UnlockAllControls方法,把Enabled属性赋值为true即可- 使用
TryParse替代直接Parse可以避免空值、格式错误导致的程序崩溃
内容的提问来源于stack exchange,提问作者UnkownReality
相关产品推荐
相关产品推荐

