父窗体事件调用不明子窗体的方法

zhou_chao_1 2007-09-28 02:04:27
各位好,小弟遇到了一个疑惑,我在一个父窗体里点击一个保存按钮,来保存我子窗体里的数据,子窗体有很多个(Form2,form3等),但每个子窗体里都有SAVE()方法来保存当前发生的数据.
...全文
402 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xz_lm_fly 2007-09-28
  • 打赏
  • 举报
回复
有几个子窗体你就要定义几个事件了,上面只是个例子而已。
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
不过"this.SaveForm1 += new SaveInf(Form1.Save);"中的Form1难以确定,我的子窗体是不活动的,不能确定是某一个子窗体哦
Johen999 2007-09-28
  • 打赏
  • 举报
回复
你做事件的时候不用代理吗???
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
好像是可以行得通哦,谢谢各位了,感激不尽!
xz_lm_fly 2007-09-28
  • 打赏
  • 举报
回复
定义一个代理:
name space xxxx
{
public delegate void SaveInf();
}
然后在主画面里:
public event SaveInf SaveForm1;

在主画面实例化Form1的时候:
this.SaveForm1 += new SaveInf(Form1.Save);

主画面Save方法里:
if(SaveForm1 !=null)
{
SaveForm1 ();
}

zjh222 2007-09-28
  • 打赏
  • 举报
回复
利用一于类专门用于保存子窗体的数据不就行了
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
如何代理啊,能举一个实例吗?读书没有读好,让大家见笑了!
xz_lm_fly 2007-09-28
  • 打赏
  • 举报
回复
使用代理
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
谢谢楼上几位热诚帮助指点,其实我是想让系统统一,本来可以在子窗体的按钮事件来保存现在的数据到数据库中的,但是这样会比较花,我想做的跟EXCEL表格一样,点击工保栏的保存就可以保存表格数据了.想用一个方法来处理它,还是没有找出来.希望大家继续帮忙啊!
Johen999 2007-09-28
  • 打赏
  • 举报
回复
你是想点击父窗体上的按钮不弹出子窗体。然后就将子窗体的数据保存是吧?
goldli 2007-09-28
  • 打赏
  • 举报
回复
1、如果是菜单的话,可以采用合并菜单的办法

如果想将子窗体中的[工具]菜单项插入到父窗口中,应该这样做。
首先将子窗体中的[工具]选中,然后设置它的属性:
mergeAction = replace;
mergeindex = 1;{当然这也可为其实值}
然后在主窗体的菜单的相应位置插入[工具]菜单;如在第二位,将形成下面的结果。
[文件] [工具] [帮助]
这时选中工具,设置他的属性:
mergeindex = 1;
visible = false;
即可;

2、如果是按钮
1、可以在子窗体中添加事件,在主窗体中处理事件。
用button的click示例,代码如下:
public class ChildForm : System.Windows.Forms.Form
{
//。。。
public event EventHandler BtnClick;
//。。。
private void button1_Click(object sender, System.EventArgs e)
{
if(this.BtnClick != null)
{
this.BtnClick(sender,e);
}
}
}

public class MainForm : System.Windows.Forms.Form
{
private void button1_Click(object sender, System.EventArgs e)
{
ChildForm cldForm = new ChildForm();
cldForm.BtnClick+= new BtnClick(MainForm_BtnClick);
}
}

2、在ChildForm中设置公有Button,
代码如下
public Button button1;
在MainForm中绑定button1的Click事件

3、将ChildForm作为参数传递给MainForm,在MainForm中直接调用ChildForm中的方法。

3、如果是一个过程
((Form2)this.ActiveMdiChild).SayHello();//获得是对哪个窗体的引用,然后强制转换,再调用
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
好像用事件不行吧,我刚试一下,行不通,因为子窗体在要保存时没有发生事件引发!父窗体调用不了子窗体的事件啊!有没有高手指点一下迷津啊!
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
不好意思,可能是我没有讲清楚,我想通过父窗体的工具栏上的一个按钮来保存当前子窗体的数据到数据库中,其中,此子窗体的数据保存到数据库中可以用子窗体的SAVE()方法来完成.我想在按父窗体的那个按钮时来调用当前活动的子窗估的SAVE()方法.
Johen999 2007-09-28
  • 打赏
  • 举报
回复
没理解,你说的保存数据,是要插入数据库信息,还是单纯的保存一个文本啊???
Johen999 2007-09-28
  • 打赏
  • 举报
回复
初学者,关注,up
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
能够举一个例子吗?小弟刚学C#不久.在主窗体里建一个事务包涵子窗体的SAVE()方法吗?现在子窗体是活动,保存当前活子窗体的数据.
peng_hai_lin 2007-09-28
  • 打赏
  • 举报
回复
建立一个事务
事务处理
zhou_chao_1 2007-09-28
  • 打赏
  • 举报
回复
请问各位有什么好的方法可以实现这个,在VB.net中可以用重载,C#好像不行啊.(申明一下,子窗体是不确定的Form)
xwk789xwk 2007-09-28
  • 打赏
  • 举报
回复
帮顶一下

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧