所以我在Windows Forms中制作项目并需要一些帮助。
在我的第一个表单中,我将数据从本地sql数据库导入DataGridView,这是关于Client Money Transfers。
现在我需要为我的DataGridView创建一个Filter,例如显示所有传输超过1500 $的客户端数据。
此类查询可以有多个参数。
所以我在buttonClick上调用另一个表单来输入所有Filter参数。
在ButtonClick上输入参数后,我需要过滤第一个Form中的DGV中的数据。但我不知道如何从另一个表格改变DGV。我试图通过这种方式调用form1:
Form form1 = new Form();
但我仍然无法访问DataGridView。
我怎样才能做到这一点?
答案 0 :(得分:0)
这不会引用原始表单,它会创建一个 new :
Form form1 = new Form();
因此,您对该变量所做的任何事情都发生在第二个内存中,不可见的形式。
据推测,在你主表单的某个地方,你正在做这样的事情,以便用过滤器逻辑显示你的第二个表格,对吗?:
Form2 form2 = new Form2();
form2.Show();
您可以做的是通过该构造函数传递对当前表单的引用,以便Form2
具有对主表单的引用。所以在Form2
构造函数中,你可能会这样做:
private Form1 parentForm;
public Form2(Form1 form1)
{
this.parentForm = form1;
}
在Form2
代码的其他任何位置,您都可以引用该父表单:
this.parentForm.SomeMethodCall();
然后在显示Form1
实例的Form2
中,它可以传递对自身的引用:
Form2 form2 = new Form2(this);
form2.Show();
此时Form2
现在可以引用Form1
公开的任何公开功能。公共属性,公共方法等等。无论在Form1
上需要发生什么逻辑,只需公开一个方法来执行它并从Form2
调用该方法。
答案 1 :(得分:0)
从您有按钮点击事件的初始表单中,您可以调用第二个过滤表单,如下所示:
using ( Form form2 = new Form())
{
if(form2.ShowDialog() == DialogResult.OK)
{
//apply data filtering based on what you got from form2
}
}