c# - 设置 DataGridView 单元格值并添加新行

标签 c# winforms datagridview

我有一个包含两列的 DataGridView。单击第一列中的单元格时,将显示一个 OpenFileDialog,当我选择一个文件时,第二列中的单元格值将设置为所选文件名。这是代码:

private void dataGridView1_CellContentClick(
    object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        SelectFile(e.RowIndex);
    }
}

private void SelectFile(int rowIndex)
{
    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        dataGridView1.Rows[rowIndex].Cells[1].Value =
            openFileDialog.FileName;
    }
}

这可行,但我希望在设置单元格值时添加一个新行。当我手动编辑单元格时会发生这种情况,该行进入“编辑”状态并且在下面添加了一个新行。当我以编程方式设置单元格值时,我希望发生同样的情况。

[编辑]

当我的表单第一次显示时,DataGridView 是空的,唯一显示的行是带有(* 符号 - IsNewRow 为真)的行。当我手动编辑该行中的单元格时,它会进入编辑状态(铅笔符号)并添加一个新的空行。当我使用上面的代码时,这不会发生。该行保持为 IsNewRow(* 号)并且未添加新行。

enter image description here enter image description here

最佳答案

使用此代码,您可以做您想做的事。我出于同样的原因使用它:

myGrid.NotifyCurrentCellDirty(true);

此答案的来源: Make new row dirty programmatically and insert a new row after it in DataGridView

关于c# - 设置 DataGridView 单元格值并添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6128555/

相关文章:

c# - 为什么不能递归调用Worker_DoWork函数?

c# - 如何防止 RadioGroup 尝试将 SelectedItem 设置为焦点?

sql-server - 如何将图像插入到 SQL Server 数据库表中

C# - 如何在删除行后刷新 DataGridView

C# UDP 服务器异步多客户端 |客户端断开连接时出现 SocketException

c# - 比较 SQL C# 中的日期

c# - C#中如何判断SQL作业是否执行成功

c# - 自定义绑定(bind)的数据 GridView

c# - 如何在 winform 中关闭所有打开的对话框的主窗体

c# - MySQL/C# 在单元格编辑时提交 DataGridView 更改?