环境: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”的定义不知大侠们如何解决类似的情况?
每个子窗体中都有一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”的定义不知大侠们如何解决类似的情况?
解决方案 »
- 求正则表达式!看似简单,实际不简单,请高手帮忙!
- TabContro最右边能添加一个关闭按钮么?
- gridview导出数据为pdf格式
- 哪位朋友有可供练习的项目啊
- c# dll引用问题
- 如何将form对象作为一个参数传入一个类中。
- 我现在有大量数据要循环使用datareader读取,但是想使用Parallel.For进行并行处理,请问该怎么做。
- 怎样使用HttpWebRequest来向一个aspx页面发送请求,并获得其回复?
- C# 打印 wpf
- 用.NET开发的应用程序在Windows98下不能正常运行,如何解决?
- 简单问题,求一access连接字符串,马上给分
- datatable资源的释放问题
public void SaveDate()
{ }
===============================
不知楼上的兄弟说的哪里?
注意:private void saveToolStripButton_Click(object sender, EventArgs e)是MDI窗体中的事件
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方法,这个方法最合适.
private interface ISaveableForm
{
void SaveDate();
}class SubForm:Form,ISaveableForm
{
...
public void SaveDate()
{
}
}在主窗体里:
private void saveToolStripButton_Click(object sender, EventArgs e)
{
if (this.ActiveMdiChild != null)
{
Form ActiveChild;
ActiveChild = this.ActiveMdiChild;
ISaveableForm isf=ActiveChild as ISaveableForm;
if (isf!=null)
{
isf.SaveData();
}
}
}
To:hbxtlhx(平民百姓)
你的第一种方法中用到了SubForm,而SubForm应该是某一子窗体的实例名称,用这种方法似乎只能对SubForm子窗体有用,而对其它的子窗体不起作用,第二种方法我还没看懂,再看看先To:sunrobust(咸鱼)
按你说的不知要怎样修改
-----------
是这样的,这样要分别对每个子窗体处理,
在这种情况下用接口是最合适不过的了.
建议你用第二种方法:接口实现.
按你的第二种方法添加了一接口:ISaveableForm,可还是不行
出现错误提示:
错误 1 “人事薪资管理系统2005.ISaveableForm”并不包含“SaveData”的定义
{
void SaveDate();
}
我这里写成private了,应是非私有才行,经如public, internal等.
public interface ISaveableForm
{
void SaveDate();
}
using System.Collections.Generic;
using System.Text;namespace 人事薪资管理系统2005
{
public interface ISaveableForm
{
void SaveDate();
}
}
我是这样写的,可还是不行
public partial class SubForm: Form, ISaveableForm
{
...
public void SaveDate()
{
}
}
原来是SaveDate与SaveData的一字之差,真是不好意思
真心感谢hbxtlhx(平民百姓)!!!