读书人

(WinForm)怎样调用当前活动子窗体中的

发布时间: 2012-01-28 22:06:13 作者: rapoo

(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方法,这个方法最合适.

读书人网 >C#

热点推荐