Пусть каждая форма реализует интерфейс с именем 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.
}
}
Проверка нуля может не потребоваться.