2016-01-20 61 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 
    } 
}