一个窗体打开两次怎么分别获取dataGridView1的数据
时间: 2023-08-09 22:09:33 浏览: 50
如果你是在同一个程序中打开了两个相同的窗体,并且两个窗体都包含了一个名为 dataGridView1 的 DataGridView 控件,那么你可以通过给这两个控件起不同的名称来区分它们,例如分别命名为 dataGridView1 和 dataGridView2。
然后在代码中,可以通过使用窗体对象的名称引用来访问不同的控件,例如:
```csharp
// 获取第一个窗体中的 dataGridView1 的数据
var data1 = form1.dataGridView1.DataSource as DataTable;
// 获取第二个窗体中的 dataGridView1 的数据
var data2 = form2.dataGridView1.DataSource as DataTable;
```
在上面的代码中,form1 和 form2 分别表示打开的两个窗体的对象。你可以根据实际情况进行修改。
相关问题
form1打开两次怎么分别获取dataGridView1的数据
如果你想在 `form1` 的两个不同的实例中获取 `dataGridView1` 的数据,可以考虑以下两种方法:
1. 使用静态成员变量
在 `form1` 中声明一个静态的 `List` 类型的成员变量,用于存储 `dataGridView1` 中的数据。在 `form1` 的 `Load` 事件中将数据存储到这个静态变量中。当打开第一个 `form1` 实例时,将数据存储到这个静态变量中。当打开第二个 `form1` 实例时,直接从静态变量中获取数据即可。
```c#
public partial class Form1 : Form
{
// 静态成员变量,用于存储 dataGridView1 中的数据
public static List<string> DataList = new List<string>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 存储 dataGridView1 中的数据到静态变量中
foreach (DataGridViewRow row in dataGridView1.Rows)
{
DataList.Add(row.Cells[0].Value.ToString());
}
}
}
```
2. 传递参数
在打开第二个 `form1` 实例时,将 `dataGridView1` 中的数据作为参数传递给 `form1` 的构造函数。在 `form1` 中保存这些数据,并在需要使用时调用即可。
```c#
public partial class Form1 : Form
{
// 用于存储传递过来的数据
private List<string> _dataList;
public Form1()
{
InitializeComponent();
}
public Form1(List<string> dataList)
{
InitializeComponent();
// 保存传递过来的数据
_dataList = dataList;
}
}
```
在打开第二个 `form1` 实例时,将 `dataGridView1` 中的数据作为参数传递给 `form1` 的构造函数。
```c#
List<string> dataList = new List<string>();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
dataList.Add(row.Cells[0].Value.ToString());
}
Form1 form1_2 = new Form1(dataList);
form1_2.Show();
```
怎么获取另一个窗体上DataGridView的值
可以使用以下代码来获取另一个窗体上DataGridView的值:
```
// 获取另一个窗体对象
Form2 form2 = new Form2();
// 获取DataGridView中选中的行
DataGridViewRow selectedRow = form2.dataGridView1.SelectedRows[0];
// 获取选中行中的某个单元格的值
string cellValue = selectedRow.Cells["ColumnName"].Value.ToString();
```
需要注意的是,上述代码中的"Form2"和"dataGridView1"应该替换成你实际的窗体类名和DataGridView控件名。此外,如果要获取所有选中的行,可以使用`SelectedRows`属性,该属性返回一个DataGridViewSelectedRowCollection对象,其中包含所有选中的行。