2015-10-17 54 views
0

我正在編寫一個程序在Windows Active Directory中進行搜索,並將搜索結果返回到列表框中的另一個表單。微軟視覺工作室C# - 有人可以向我解釋爲什麼我的代碼不工作,以及如何讓它工作?

這是我的getter方法看起來像在主窗體上:

public List<String> getSearchResults() 
{ 
    List<String> accountList = new List<String>(); 
    foreach (SearchResult account in searchResultCollection) 
    { 
     accountList.Add(account.Properties["cn"][0].ToString()); 
    } 
    return accountList; 
} 

它是在負載僅稱爲第二形式:

private void AccSelect_Form_Load(object sender, EventArgs e) 
{ 
    List<String> accountList = Main_Form.getSearchResults(); 
} 

然而,編譯器告訴我「非靜態方法需要對象引用「。但是我的getter方法根本不可能是靜態的。

從我之前研究這個問題的研究看來,我需要一個擁有我的getter方法(所以我的主窗體)的類的實例來運行。自從我的第一個表單是實例化第二個表單以來,這很好。無論如何,第二種形式永遠不會運行。

任何人都可以給我一個可能的解決方案嗎? :C

回答

0

當你需要調用一個方法從子窗體的主要形式,可以這樣的代碼(假設你的主要形式是類型的MainForm的):

MainForm parent = (MainForm)this.Owner; 
parent.getSearchResult();//CustomMethodName(); 
+0

耶這個工作!唯一的問題是,現在它聲稱我所做的引用是空的,因爲沒有我父窗體的實例(什麼?),它會拋出一個空指針異常。 –

相關問題