2012-01-27 32 views
0

我正在使用C#和非常舊的.Net版本。我有數百個表格和一個班級。每個表單都有一個ProcessDump()方法。當表單被打開時,其控件被傳遞給我的班級。我需要調用ProcessDump方法,我擁有的是窗體的控件。我如何訪問該方法?如何從表單控件訪問表單實例

+0

究竟是什麼版本? – Oded 2012-01-27 11:44:53

+0

使用反射查找方法並調用它。 Control.FindForm()+ Object.GetType()+ Type.GetMethod()。 – 2012-01-27 12:49:10

回答

2

讓每個形式實現稱爲IProcessDump的接口:

interface IProcessDump 
{ 
    void ProcessDump(); 
} 

假設的WinForms,有FindForm方法回到.NET 1.1。抓鬥的形式,並測試其接口:

Form formRef = myControl.FindForm(); 
IProcessDump procDump = formRef as IProcessDump; 

if (procDump != null) 
{ 
    procDump.ProcessDump(); 
} 

可替換地,控制具有Parent屬性。對於直接放置在表單上的控件,父項將爲表單:

foreach (Control c in myControls) 
{ 
    if (c.Parent != null && c.Parent is Form) 
    { 
     // Found, go nuts. 
    } 
} 

可能不需要空檢查。

+0

第一個工作正常,謝謝。 – 2012-01-27 12:47:34

相關問題