You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#非绑定数据库DataGridView单元格互斥置零及数值输入限制需求

解决未绑定数据库的C# DataGridView两个需求:互斥单元格赋值+数值输入限制

一、实现单元格“c”和“d”的互斥赋值逻辑

要实现当“c”单元格值>0时把“d”设为0,反之亦然,你可以监听DataGridView的CellValueChanged事件,在值变化时触发判断和赋值:

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = sender as DataGridView;
    if (dgv == null) return;

    string columnName = dgv.Columns[e.ColumnIndex].Name;
    if (columnName != "c" && columnName != "d") return;

    if (!decimal.TryParse(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value?.ToString(), out decimal currentValue))
        return;

    int targetColumnIndex = columnName == "c" ? dgv.Columns["d"].Index : dgv.Columns["c"].Index;
    if (currentValue > 0)
    {
        dgv.Rows[e.RowIndex].Cells[targetColumnIndex].Value = 0;
    }
}

关键点说明:

  • 先判断操作列是否为目标列,避免无关单元格触发逻辑
  • 用decimal.TryParse做值转换,兼容空值或非数值的容错场景
  • 动态获取目标列索引,让代码更灵活适配列位置变化

二、限制“c”“d”列对应的文本框仅允许输入数值

通过监听EditingControlShowing事件,给编辑状态的文本框添加KeyPress事件过滤输入:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    DataGridView dgv = sender as DataGridView;
    if (dgv == null) return;

    if (dgv.CurrentCell.OwningColumn.Name != "c" && dgv.CurrentCell.OwningColumn.Name != "d")
        return;

    TextBox txtBox = e.Control as TextBox;
    if (txtBox != null)
    {
        txtBox.KeyPress -= txtBox_KeyPress;
        txtBox.KeyPress += txtBox_KeyPress;
    }
}

private void txtBox_KeyPress(object sender, KeyPressEventArgs e)
{
    // 允许数字、退格键、小数点(不需要小数可去掉小数点判断)
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b' && e.KeyChar != '.')
    {
        e.Handled = true;
    }

    // 限制只允许一个小数点
    TextBox txtBox = sender as TextBox;
    if (e.KeyChar == '.' && txtBox.Text.Contains("."))
    {
        e.Handled = true;
    }
}

关键点说明:

  • 每次编辑控件显示时先移除旧事件绑定,防止重复触发
  • 可根据需求调整允许的字符,比如只需要整数就删除小数点相关判断
  • 用e.Handled = true直接阻止非合规字符输入

内容的提问来源于stack exchange,提问作者Super999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:36:27