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

Form2接收dataGridView数据源报错,求WinForm数据交互实现指导

DataGridView跨窗体数据操作实现方案

(Form1仅展示Excel数据,Form2负责筛选、增删改)

你这段代码报错的核心是Form2未定义对应参数的构造函数,而且直接传递DataSource还可能存在类型不匹配、数据同步的问题,下面是完整的解决步骤:

1. 给Form2添加对应构造函数

建议传递强类型数据源(比如从Excel读取的DataTable,而非泛型object),先在Form2中定义接收数据源的构造函数:

// Form2代码
public partial class Form2 : Form
{
    private DataTable _editDataTable;

    // 接收DataTable的构造函数
    public Form2(DataTable sourceTable)
    {
        InitializeComponent();
        _editDataTable = sourceTable;
        // 将数据源绑定到Form2的DataGridView(假设Form2有dataGridView2)
        dataGridView2.DataSource = _editDataTable;
    }
}

如果你的数据源是BindingSource,只需把构造函数参数改成BindingSource即可。

2. 修改Form1的按钮点击事件

强转数据源类型后再传递,避免类型错误,同时处理Form2关闭后的刷新:

// Form1按钮点击事件
private void b_procced_Click(object sender, EventArgs e)
{
    // 先判断并转换数据源类型为DataTable
    if (dataGridView1.DataSource is DataTable targetTable)
    {
        Form2 editForm = new Form2(targetTable);
        // 以模态方式打开Form2,关闭后刷新Form1的表格
        if (editForm.ShowDialog() == DialogResult.OK)
        {
            dataGridView1.Refresh();
        }
    }
}

3. Form2中实现筛选、增删改操作

筛选

利用DataTable的默认视图过滤:

// 示例:筛选"年龄"大于20的行
_editDataTable.DefaultView.RowFilter = "年龄 > 20";

如果用BindingSource,直接设置其Filter属性即可。

新增行

// 创建新行并赋值
DataRow newRow = _editDataTable.NewRow();
newRow["姓名"] = "王五";
newRow["年龄"] = 28;
// 添加到DataTable
_editDataTable.Rows.Add(newRow);

删除行

if (dataGridView2.SelectedRows.Count > 0)
{
    // 获取选中行对应的DataRow
    DataRowView selectedRowView = (DataRowView)dataGridView2.SelectedRows[0].DataBoundItem;
    selectedRowView.Row.Delete();
    // 提交删除操作
    _editDataTable.AcceptChanges();
}

修改数据

直接在Form2的DataGridView中编辑单元格内容即可,因为数据源是绑定状态,修改会自动同步到原DataTable。

4. 可选:添加修改确认逻辑

在Form2中加一个“保存”按钮,点击后确认修改并返回状态:

// Form2保存按钮事件
private void btn_Save_Click(object sender, EventArgs e)
{
    _editDataTable.AcceptChanges();
    this.DialogResult = DialogResult.OK;
    this.Close();
}

这样Form1可以根据返回的DialogResult判断是否需要刷新表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:55:19