如何从表单控件访问表单实例

时间:2012-01-27 11:43:47

标签: c# .net forms

我正在使用C#和非常旧版本的.Net。我有数百种表格和课程。每个表单都有一个ProcessDump()方法。打开表单时,其控件将传递给我的类。我需要调用ProcessDump方法,我所拥有的只是表单的控件。如何访问该方法?

1 个答案:

答案 0 :(得分: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.
    }
}

可能不需要空检查。