2016-01-20 86 views
0

所以我在Windows窗体中制作项目并需要一些帮助。从另一种形式过滤datagridview

在我的第一个表格中,我将数据从本地sql数据库导入到DataGridView中,该数据关于客户货币转账。

现在我需要为我的DataGridView制作一个过滤器,例如显示所有传输超过1500美元的客户端数据。

这样的查询可以有多个参数。

所以我在button上调用另一个窗体单击以输入所有Filter参数。

在ButtonClick上输入参数后,我需要过滤第一个窗体中的DGV中的数据。但我不知道如何从另一个表单中更改DGV。我是想通过这种方式来调用Form1中:

Form form1 = new Form();

但我仍然不能达到的DataGridView。

我该如何做到这一点?

回答

0

这不引用原始形式,它会创建一个新一个

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调用该方法。

+0

感谢您的帮助 – dave1993

0

从您最初的形式,你必须按一下按钮事件中,你可以打电话给你的第二滤波形式是这样的:

using (Form form2 = new Form()) 
{ 
    if(form2.ShowDialog() == DialogResult.OK) 
    { 
     //apply data filtering based on what you got from form2 
    } 
}