我有两个表单Form1和Form2,表单1带有dataGridView和一个按钮,其中Form2有一个按钮。
当我单击Form1中的button1时,它将打开Form2(重叠)。
现在我需要在按下时清除 Form1中datagridview的值 Form2中的按钮 也应该关闭相同的按钮单击事件 窗体2。
知道该怎么做吗?
感谢任何帮助
答案 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();
}
}