如何从另一个表单中清除dataGridView行?

时间:2015-11-26 09:30:10

标签: c# winforms datagridview

我有两个表单Form1和Form2,表单1带有dataGridView和一个按钮,其中Form2有一个按钮。

当我单击Form1中的button1时,它将打开Form2(重叠)。

  

现在我需要在按下时清除 Form1中datagridview的值   Form2中的按钮 也应该关闭相同的按钮单击事件   窗体2。

知道该怎么做吗?

感谢任何帮助

4 个答案:

答案 0 :(得分:1)

这是表格2:

private DataGridView _dgv;

public Form2(DataGridView dgv)
{
    _dgv = dgv;
    InitializeComponent();
}


private void buttonClearRows_Click(object sender, EventArgs e)
{
     _dgv.Rows.Clear();
     Close();
}

这是Form1:

 private void buttonOpenForm2_Click(object sender, EventArgs e)
 {
   new frm2(dataGridView1).ShowDialog();
 }

答案 1 :(得分:1)

您需要通过构造函数或属性将对Form1的引用传递给Form2。示例使用构造函数。将控件的名称更改为您拥有的控件的名称。将此视为伪代码示例。

Form1 (为brewity删除了一些逻辑)

public class Form1
{
   ...
   public void Clear() 
   {
       DataGridView1.Rows.Clear();
   }

   public void btnOpenForm2_Click(object sender, EventArgs e)
   {
      var form2 = new Form2(this); // create a new form2, and pass a reference to form1
      form2.Show(); // show the form.
   }
   ...
}

Form2 (为brewity删除了一些逻辑)

public class Form2
{
   private Form1 _parent; // this will hold the parent until Form2 is disposed.
   ...
   public void Form2(Form1 parent) 
   {
       _parent = parent; // assign Form1 instance to a field.
   }

   public void btnClearGrid(object sender, EventArgs e)
   {
      _parent.Clear(); // clear the rows in the datagridview instance within form1.
   }
   ...
}

答案 2 :(得分:1)

如果我理解你的要求,我强烈建议在课堂外隐藏对Form1中DataGridView的访问,以避免将来发生意外行为。

您可以在 Form1 中添加功能,并以这种方式管理button1点击事件:

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        Form2 dialog = new Form2();
        dialog.ShowDialog(this);
    }

    public void ClearRows() { dataGridView1.Rows.Clear(); }
}

然后在 Form2 中,您可以通过以下方式轻松处理点击按钮:

public partial class Form2 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        ((Form1)this.Owner).ClearRows();
        this.Close();
    }
}

答案 3 :(得分:0)

非常简单,在form1中你可以创建一个Form2实例,在show之后你可以在子form2中设置dataGridView的引用。

基础是你在form1中设置dataGridProperty修饰符= public(可视属性F4)的人

这是Form1:

int

这是表格2:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f = new Form2();
        f.dataGridViewPassed = this.dataGridView1;
        f.ShowDialog();
    }
}