2016-01-28 83 views
0

我訪問我的Usercontrol的方法時遇到問題。從父窗體調用用戶控件的方法

我的設置如下:

我有一個名爲「SearchForm」 MainForm,然後叫「ShowSequence」(它從SearchForm調用)第二種形式。

ShowSequence窗體上有一個名爲「SequenceList」的UserControl,它附帶有一個WPF ListView。 ShowSequence表單加載時填充ListView內容。

現在,當我單擊我的SearchForm中的按鈕時,我想要刷新ShowSequence窗體上我的SequenceList(UserControl)的ListView。

因爲我創建了幾個這些ShowSequence窗體(作爲實例),我將不得不找到我需要的ShowSequence窗體。我將通過名稱來識別它,並調用的MyMethod():

if (System.Windows.Forms.Application.OpenForms["NameofForm"] != null) 
{ 
    (System.Windows.Forms.Application.OpenForms["NameofForm"] as ShowSequence).MyMethod(); 
} 

所以的MyMethod ShowSequence表上現在應該進入一個名爲刷新()在SequenceList類(用戶控件)方法,並開始了我的ListView的刷新。

顯示排序表.......

public void MyMethod() 
{ 
    SequenceList.Refresh(); // error 
} 

那是不可能的。系統告訴我創建一個對象引用來訪問Refresh()方法,因爲它不是靜態的。

所以我用這個:

public void MyMethod() 
{ 
    SequencList SeqLi = new SequenceList(); 
    SeqLi.Refresh(); 
} 

但是,當我這樣做,我沒有得到我的SequenceList.ListView是在更新ShowSequence形式的開放實例中運行。我猜是因爲我創建了SequenceList的 對象,而不是在打開的窗體上調用Method?還是我錯了?

+0

感謝您編輯SwiftArchitekt。 – fid200

回答

0

好吧,我找到了解決方案。

我必須使用創建時在SequenceView中創建的(UserControl)SeuquenceList對象。

這就是訣竅:)

相關問題