笑着宣泄悲伤 2022-04-07 14:34 采纳率: 77.8%
浏览 84
已结题

C# datagridview添加复选框后,如何操作

问题遇到的现象和发生背景

在datagridview中添加了复选框,现在想要把选中的数据填入textbox中

问题相关代码,请勿粘贴截图

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
//不是序号列和标题列时才执行
if (e.RowIndex != -1 && e.ColumnIndex != -1)
{
//checkbox 勾上
if ((bool)dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue == true)
{
//选中改为不选中
this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = false;
}
else
{
//不选中改为选中
this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = true;
}
}
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

img


如上图,现在想要达到的结果就是textbox中,除了数量是选中的几列中的数量相加,其他的都显示datagridview选中的第一行的数据

  • 写回答

3条回答 默认 最新

  • 金士顿 2022-04-07 15:30
    关注

    很简单实现的,如有帮助,请采纳

            private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            {
                //不是序号列和标题列时才执行
                if (e.RowIndex != -1 && e.ColumnIndex != -1)
                {
                    //checkbox 勾上
                    if ((bool)dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue == true)
                    {
                        //选中改为不选中
                        this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = false;
                       
                        //没有选中,你可以自己清空控件状态
                    }
                    else
                    {
                        //不选中改为选中
                        this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = true;
    
                        int sum = 0;
                        for (int i = 0; i < dataGridView1.RowCount; i++)
                        {
                            if ((bool)dataGridView1.Rows[i].Cells[0].EditedFormattedValue == true)
                            {
                                //选中状态参与计算
                                sum += int.Parse(dataGridView1.Rows[e.RowIndex].Cells[4].ToString());
                            }
                        }
    
                        text_数量控件.Text = sum.ToString();
    
                        //其他控件
                        text_项目编码控件.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();       //项目编码
                        text_名称控件.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();       //名称
                        text_出货日.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();       //出货日
                    }
                }
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月8日
  • 已采纳回答 4月8日
  • 修改了问题 4月7日
  • 创建了问题 4月7日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效