资深Bug工程师 2023-11-02 12:54 采纳率: 50%
浏览 12
已结题

C#datagridview控件遇到的问题

C#datagirdview控件终于到的问题
有一行数据分别是:第一列:姓名,第二列:年龄,第三列:性别,第四列:爱好,存在datagirdview控件中
对应着有三个textbox文本框如下图:

img


四组数据需要分两次采集,步骤如下:
1.第一次采集数据,在文本框内输入姓名,年龄,点保存,数据保存到下方datagirdview,此时姓名和年龄有数据,性别和爱好没数据
2.第二次采集数据,单击datagridview,选中要补全信息的那一行,然后双击 信息自动重新填回到文本输入框内,然后填写性别和爱好,补全信息,然后点击保存,补全的信息重新填回到datagirdview当中。
遇到的问题,以上步骤都已经实现,但是在补全信息重新填回datagirdview当中的时候,信息总是另起一行填回,也就是说一顿流程操作下来,会出现两行数据,一行信息不全的,一行信息齐全的。请问怎么解决可以在补全信息后,覆盖原来的信息呢?

  • 写回答

5条回答 默认 最新

  • 社区专家-Monster-XH 2023-11-02 12:58
    关注
    • 要解决你的问题,要定位DataGridView控件中当前选中的行,并更新那一行的数据,不是添加新的一行。解决方案:
    1. 获取DataGridView的当前选中行的索引。
    2. 用此索引来更新该行的数据。

    代码如下:

    // 假设你的DataGridView的名称是dataGridView1
    // 保存按钮的点击事件
    private void btnSave_Click(object sender, EventArgs e)
    {
        // 检查是否有选中的行
        if(dataGridView1.SelectedRows.Count > 0)
        {
            // 获取当前选中行的索引
            int rowIndex = dataGridView1.SelectedRows[0].Index;
    
            // 更新数据
            dataGridView1.Rows[rowIndex].Cells[0].Value = textBox1.Text; //姓名
            dataGridView1.Rows[rowIndex].Cells[1].Value = textBox2.Text; //年龄
            dataGridView1.Rows[rowIndex].Cells[2].Value = textBox3.Text; //性别
            dataGridView1.Rows[rowIndex].Cells[3].Value = textBox4.Text; //爱好
        }
        else
        {
            // 如果没有选中的行,那么添加新的行
            dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月2日

悬赏问题

  • ¥15 asp写PC网站开通了微信支付,扫码付款不能跳转
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 关于#c语言#的问题:我在vscode和codeblocks中编写c语言时出现打不开源文件该怎么办
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊