Вы можете получить данные выбранной строки через событие «CellDoubleClick».
А затем используйте Application.OpenForms Property
, чтобы получить экземпляр Form2
.
Для доступа к dgv2 что в Form2 вы можете определить свойство для его достижения.
Form2.cs:
// Define a property to access dgv2
public DataGridView DGV
{
get { return dataGridView2; }
set { dataGridView2 = value; }
}
Ниже приведена простая демонстрация, к которой вы можете обратиться.
Form1 .cs:
Form2 form2;
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
// Get the instance of Form2
form2 = (Form2)Application.OpenForms["Form2"];
// Save the selected row's items into a list
List<string> items = new List<string>();
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
items.Add(dataGridView1.Rows[e.RowIndex].Cells[i].Value.ToString());
}
// Add new data to dgv2
DataGridViewRow dr = new DataGridViewRow();
dr.CreateCells(form2.DGV);
dr.Cells[0].Value = items[0];
dr.Cells[1].Value = items[1];
// call the property "DGV" in Form2.cs
form2.DGV.Rows.Add(dr);
}
private void Form1_Load(object sender, EventArgs e)
{
// Add some test data into dgv1
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn()
{ ColumnName = "species", DataType = typeof(string) });
dt.Columns.Add(new DataColumn()
{ ColumnName = "weight", DataType = typeof(string) });
dt.Rows.Add("Cat", "12");
dt.Rows.Add("Mouse", "3");
dt.Rows.Add( "Pig", "308");
dt.Rows.Add( "Elephant", "1652");
dataGridView1.DataSource = dt;
}
// Open form2
private void btOpenForm2_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
}