我需要在正确的方向上进行一些指导,以解决这个小问题。
我有两种形式。在Form1上,我有空dataGridView1和一个名为btnAdd的按钮。当用户单击该按钮时,将显示Form2(From2.ShowDialog())。在这个form2上我有dataGridView2和一个按钮btn2。 Datagridview绑定到SQL表(它显示id和name列)。当用户在dataGridView中选择一行并单击btn2时,我需要将该行添加到dataGridView1中。我怎样才能做到最好。谢谢你的帮助。
这是我的一些代码。
// I show new form
private void btnAdd_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
From2.Text = "some title text";
form2.ShowDialog(this);
}
// In form2 I bind data to dataGridView2 and need to add
// selected item to dataGridView1
public Form2()
{
InitializeComponent();
getData();
}
private void getData()
{
try
{
String connectionString = "my connection string";
SqlConnection connection = new SqlConnection(connectionString);
DataTable data = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("my SQL query", connection);
da.Fill(data);
dataGridView2.DataSource = data;
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
}
private void btn2_Click(object sender, EventArgs e)
{
if (dataGridView2.SelectedCells.Count > 0)
{
int i = dataGridView2.SelectedCells[0].RowIndex;
DataGridViewRow r = dataGridView2.Rows[i];
//Need to add selected row to dataGridView1
}
}
答案 0 :(得分:1)
您可以使用所有者属性
Form2 form2 = new Form2(dataGridView1);
From2.Text = "some title text";
form2.Owner=this;
form2.ShowDialog(this);
在form2上;
((Form1)this.Owner).YOURMETHODTOADDROW(your parameter)
实施YOURMETHODTOADDROW将行添加到网格然后刷新grid1
答案 1 :(得分:0)
你可以将dataGridView1的引用传递给Form2,虽然这种事情可以很快让你的代码纠缠在一起。
public class Form1 : Form
{
...
private void btnAdd_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(dataGridView1);
From2.Text = "some title text";
form2.ShowDialog(this);
}
}
public class Form2 : Form
{
private DataGridView form1DataGridView;
public Form2(DataGridView form1DataGridView)
{
InitializeComponent();
this.form1DataGridView = form1DataGridView;
getData();
}
private void btn2_Click(object sender, EventArgs e)
{
// do something with form1DataGridView
}
}