MDI应用程序中最基本的问题之一就是对子窗体的管理。
在开发一个应用程序的时候,我遇到一个问题。很多子窗体是类似的,但又有细微的差别。我用父窗体去管理这些子窗体的时候,很多方法是一样的,但具体实现上又可能会有所不同。因此就需要多态来实现对子窗体的管理,具体做法如下:
1.编写一个父类FormX,它继承自Form类。它基本上什么都不做,只是写一些虚函数。

2.所有的子窗体类和MDI窗体类均继承自FormX,在子窗体类中重写FormX中的那些方法。

以下是对父类虚拟函数的具体实现

3.在你需要对子窗体管理的时候,你就可以用(FormX)this.ActiveChild来调用子窗体中的函数了,这时你不必知道当前活动的究竟是哪个窗体,编译器自动会找到需要调用的函数。