C# 从其他窗体筛选datagridview
所以我在Windows窗体中制作项目,需要一些帮助 在我的第一个表单中,我将数据从本地sql数据库导入DataGridView,这是关于客户端资金转移的 现在,我需要为我的DataGridView制作一个过滤器,例如显示传输超过1500美元的所有客户端数据 此类查询可以有多个参数 因此,我在按钮上调用另一个表单,单击以输入所有过滤器参数 在按钮上输入参数后,单击我需要过滤第一种形式的DGV中的数据。但我不知道如何将DGV从另一种形式更改。我试着用这种方式给form1打电话:C# 从其他窗体筛选datagridview,c#,sql,winforms,C#,Sql,Winforms,所以我在Windows窗体中制作项目,需要一些帮助 在我的第一个表单中,我将数据从本地sql数据库导入DataGridView,这是关于客户端资金转移的 现在,我需要为我的DataGridView制作一个过滤器,例如显示传输超过1500美元的所有客户端数据 此类查询可以有多个参数 因此,我在按钮上调用另一个表单,单击以输入所有过滤器参数 在按钮上输入参数后,单击我需要过滤第一种形式的DGV中的数据。但我不知道如何将DGV从另一种形式更改。我试着用这种方式给form1打电话: formform1=
formform1=新表单()代码>
但我仍然无法访问DataGridView
如何实现这一点?这并没有引用原始表单,而是创建了一个新表单:
所以,对该变量所做的任何操作都会发生在内存中的第二个不可见的形式上
大概,在主窗体的某个地方,您这样做是为了用过滤逻辑显示第二个窗体,对吗
Form2 form2 = new Form2();
form2.Show();
您可以做的是通过该构造函数传递对当前表单的引用,这样Form2
将有一个对主表单的引用。因此,在Form2
构造函数中,您可以执行以下操作:
private Form1 parentForm;
public Form2(Form1 form1)
{
this.parentForm = form1;
}
因此,在表单2中的任何其他地方,您都可以引用该父表单:
this.parentForm.SomeMethodCall();
然后在Form1
中,当您显示Form2
实例时,它可以将引用传递给自身:
Form2 form2 = new Form2(this);
form2.Show();
此时,Form2
现在可以引用Form1
公开的任何公共功能。公共属性、公共方法等。因此,无论在表单1
上需要发生什么逻辑,只需公开一个方法即可,并从表单2
中调用该方法,在初始表单中,您可以使用按钮单击事件调用第二个筛选表单,如下所示:
using ( Form form2 = new Form())
{
if(form2.ShowDialog() == DialogResult.OK)
{
//apply data filtering based on what you got from form2
}
}
using ( Form form2 = new Form())
{
if(form2.ShowDialog() == DialogResult.OK)
{
//apply data filtering based on what you got from form2
}
}