如何在C#、SQL Server及VS2022中传递DataGridView记录到另一窗体
在Visual Studio 2022中跨窗体传递DataGridView数据的基础要点
对于编程新手来说,跨窗体传递DataGridView数据的核心是把Form2控件里的有效数据提取出来,再传递给Form1。下面是几个最基础、易上手的实现方式:
方法1:通过构造函数传递(最常用)
这种方式直接在Form1的构造函数里接收数据,实例化时一次性传入,逻辑清晰不易出错。
- 在Form1中定义带参数的构造函数:
public partial class Form1 : Form { public Form1(DataTable gridData) { InitializeComponent(); // 将传入的数据绑定到Form1的DataGridView(如果需要显示) dataGridView1.DataSource = gridData; } }
- 在Form2中触发传递逻辑(比如按钮点击事件):
private void btnPassData_Click(object sender, EventArgs e) { // 提取DataGridView的数据源(假设绑定的是DataTable) DataTable sourceData = (DataTable)dataGridView1.DataSource; // 复制一份数据避免原数据被意外修改 DataTable passData = sourceData.Copy(); // 实例化Form1并传入数据 Form1 targetForm = new Form1(passData); targetForm.Show(); }
方法2:通过公共属性传递
如果需要先实例化Form1再传递数据,或者要传递多组数据,用公共属性会更灵活。
- 在Form1中定义公共属性:
public partial class Form1 : Form { // 定义公共属性存储传递来的数据 public DataTable ReceivedData { get; set; } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 在Form1加载时绑定数据 if (ReceivedData != null) { dataGridView1.DataSource = ReceivedData; } } }
- 在Form2中赋值并打开Form1:
private void btnPassData_Click(object sender, EventArgs e) { DataTable passData = ((DataTable)dataGridView1.DataSource).Copy(); Form1 targetForm = new Form1(); targetForm.ReceivedData = passData; targetForm.Show(); }
方法3:通过静态类共享数据
适合多窗体间频繁共享数据的场景,数据存在静态类里,任何窗体都能随时访问。
- 创建静态共享类:
public static class SharedDataStore { // 静态属性存储数据 public static DataTable GridData { get; set; } }
- Form2中存储数据:
private void btnSaveData_Click(object sender, EventArgs e) { SharedDataStore.GridData = ((DataTable)dataGridView1.DataSource).Copy(); }
- Form1中读取数据:
private void Form1_Load(object sender, EventArgs e) { if (SharedDataStore.GridData != null) { dataGridView1.DataSource = SharedDataStore.GridData; } }
关键注意事项
- 如果你的DataGridView不是绑定DataTable,而是手动添加的行,需要遍历
dataGridView1.Rows,把每行数据存入自定义类集合(比如List<MyDataModel>)再传递 - 传递时尽量用
Copy()复制数据,避免引用传递导致Form1修改数据时影响Form2的原数据 - 确保传递数据时目标窗体的控件已经初始化,避免空引用异常
内容的提问来源于stack exchange,提问作者Urvish Google
相关产品推荐
相关产品推荐

