(WinForm)怎样调用当前活动子窗体中的过程
环境:VS.NET 2005
每个子窗体中都有一Public过程SaveData,在MDI窗体中按下某一按钮后通过ActiveMdiChild来调用子窗体中的SaveData过程
在VB.NET中可以如下实现:
Private Sub SaveToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripButton.Click
If Not (Me.ActiveMdiChild Is Nothing) Then
Dim ActiveChild = Me.ActiveMdiChild
ActiveChild.SaveData()
End If
End Sub
在C#中:
private void saveToolStripButton_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild != null)
{
Form ActiveChild;
ActiveChild = this.ActiveMdiChild;
ActiveChild.SaveData();
}
出现错误提示:
错误 1 “System.Windows.Forms.Form”并不包含“SaveData”的定义
不知大侠们如何解决类似的情况?
------解决方案--------------------ActiveChild 要转换成你的子窗体的类型,如下:
private void saveToolStripButton_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild != null)
{
Form ActiveChild;
ActiveChild = this.ActiveMdiChild;
SubForm f=ActiveChild as SubForm;
if (f!=null)
{
f.SaveData();
}
}
}
或用接口来实现,让你的所有子窗口都继承这个接口,然后,在主窗体的事件里通过接口来调用SaveData方法,这个方法最合适.