加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在datagridview中的列中显示文本框中已选中复选框的数

发布时间:2020-12-15 21:41:59 所属栏目:百科 来源:网络整理
导读:我有一个带有CheckBox列的DataGridView. (这是一个库存系统.)该检查用于在我们公司中将项目的序列号从一个位置移动到另一个位置. 我还有一个文本框,截至目前,员工输入他正在移动的项目数,然后检查相应的序列号,并移动项目. 我想根据检查的序列号来生成文本框
我有一个带有CheckBox列的DataGridView. (这是一个库存系统.)该检查用于在我们公司中将项目的序列号从一个位置移动到另一个位置.

我还有一个文本框,截至目前,员工输入他正在移动的项目数,然后检查相应的序列号,并移动项目.

我想根据检查的序列号来生成文本框中的数字.它甚至可能吗?我已经尝试了大约一百种不同的解决方案,它们都以奇怪的错误结束,或者没有给我任何结果.

解决方法

未经测试,但这应该足够接近.当我遇到同样的问题时,我读过一篇关于这篇的文章.诀窍是在单击框时立即提交编辑,然后触发CellValueChanged事件.然后你可以从那里拿起计数.

这应该在您选中时取消选中文本框并取消选中该复选框:

private void dgv_CurrentCellDirtyStateChanged(object sender,EventArgs e)
{
    if (dgv.IsCurrentCellDirty && dgv.CurrentCell.OwningColumn.Name == "MyCheckColumn")
        dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

private void dgv_CellValueChanged(object sender,DataGridViewCellEventArgs e)
{
    if (e.RowIndex == -1) //just a guard for the header row
        return;

    if (dgv.Columns[e.ColumnIndex].Name == "MyCheckColumn")
        textBox.Text = dgv.Rows.Cast<DataGridViewRow>().Count(r => Convert.ToBoolean(r.Cells["MyCheckColumn"].Value)).ToString();
}

希望Linq有效.如果没有,你将不得不用一个sum变量以老式的foreach方式来做.我知道DataGridViewRowCollection有时会很挑剔.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读