关于多窗口的问题 我现在有两个窗口,form1和form2,form2有一操作会打开form1,当form1的操作结束后会关闭form1。请问此时如何让form2再执行一次load事件中的代码。我想到的另一种办法是当form2打开form1的时候把自己关闭掉。因为这个会比较麻烦。所以我还是觉得前面那种办法比较可行一些。。请问该怎么半啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lz你好,你说的如果“真实”的把Form1自己给关闭掉的话,那么Form2必然也被关闭掉的但是可以“假”关闭,就是使Form2打开时,Form1是隐藏就可以实现lz的意思了。隐藏:Hide()方法 From2 form=new Form2();if(form.showDialog()==DialogResult.OK)this.Onload(null);把FORM2里面button的属性改为OK就可以了 你可以将load中所调用的代码,写成一个方法 void myload(){}然后你在load中可以调用myload,在操作后你直接调用myload 你可以将load中所调用的代码,写成一个方法 void myload(){}然后你在load中可以调用myload,在操作后你直接调用myload可以用事件关联。在form1 close()的时候定义一个事件,然后在form2 哪里关联。 form1 和 form2 哪一个是启动窗口 ?让form2再执行一次load事件中的代码,是在FORM1中执行 FORM2 的LOAD ,还是在FORM2中执行本窗口FORM2中的LOAD ? private void button7_Click(object sender, EventArgs e) { Form1_Load(sender, e); } From2 form=new Form2();form.showDialog();private void button1_Click(object sender, EventArgs e) { From1 f = new form1(); if(f .showDialog()==DialogResult.OK) { this.Onload(null); } } 其实你可以在form1中定义事件委托,然后在form2中调用,我这里提供一点我的处理方法:我定义了一个CtlLoginUser登录用户维护自定义控件,这个控件我放在另一个窗体A中,当用户编辑登录用户信息时,刷新A窗体中的用户列表。 //CtlLoginUser自定义控件源部份代码: public partial class CtlLoginUser : UserControl { public delegate void OnFormChangeEventDelegate(object sender, EventArgs arg); public event OnFormChangeEventDelegate FormChangeEvent; protected void OnFormChangeEvent(EventArgs e) { if (this.FormChangeEvent != null) this.FormChangeEvent(this,e); } public CtlLoginUser() { InitializeComponent(); } private void btnSave_Click(object sender, EventArgs e) {//数据保存时 if (验证成功) { OnFormChangeEvent(e); } } }我在A窗体中的构造函数中初始化自定义控件的事伯,下面是当用户保存后刷新A窗口的部份代码: public FrmLoginUserList() { InitializeComponent(); this.ctlLoginUser.FormChangeEvent += new Control.CtlLoginUser.OnFormChangeEventDelegate(ctlLoginUser_FormChangeEvent); } void ctlLoginUser_FormChangeEvent(object sender, EventArgs arg) { this.LoadData(); //也可以调用下面的load事件 //this.FrmLoginUserList_Load(sender, arg); }这样的话,当保存登录用户数据后,窗体的用户列表就会刷新。 要在form2窗体中注册form1中定义的事件哦。别搞忘这个了。完毕。 楼主这种操作,主窗体不能是from1和from2,如果有一个是,都不能用close,只能hide,否则程序直接关闭了。至于执行from2的fromlode代码,完全可以把fromlode内执行操作封装进函数,需要刷新的时候直接调用就可以了。 我终于搞好了。用的是将LOAD操作里的东西放进一个函数中的做法。其余的要多注意互相引用的值传递问题 如何读取外部文件的图片信息并且使其显示于指定pictureBox内? oledb连接数据库调用Oracle数据库函数的问题 C#做企业人事信息管理系统,有人能提供一个类似的系统给我做参考吗? js的奇怪问题,望各位协助解决 这段代码为什么是这个结果? as string和 tostring()有什么区别吗? 反序列化时如何识别是哪个对象? 关于水晶报表中的详细资料部分打印两遍的问题.急! 如何获取window form的datagrid的总行数 如何把二进制写入word文档? 串口通信问题 怎样定义从数据库中查询出的数据?在线等待中。。。
if(form.showDialog()==DialogResult.OK)
this.Onload(null);
把FORM2里面button的属性改为OK就可以了
让form2再执行一次load事件中的代码,是在FORM1中执行 FORM2 的LOAD ,还是在FORM2中执行
本窗口FORM2中的LOAD ? private void button7_Click(object sender, EventArgs e)
{ Form1_Load(sender, e);
}
form.showDialog();
private void button1_Click(object sender, EventArgs e)
{
From1 f = new form1();
if(f .showDialog()==DialogResult.OK)
{
this.Onload(null);
}
}
其实你可以在form1中定义事件委托,然后在form2中调用,我这里提供一点我的处理方法:
我定义了一个CtlLoginUser登录用户维护自定义控件,这个控件我放在另一个窗体A中,当用户编辑登录用户信息时,刷新A窗体中的用户列表。 //CtlLoginUser自定义控件源部份代码:
public partial class CtlLoginUser : UserControl
{
public delegate void OnFormChangeEventDelegate(object sender, EventArgs arg);
public event OnFormChangeEventDelegate FormChangeEvent;
protected void OnFormChangeEvent(EventArgs e)
{
if (this.FormChangeEvent != null)
this.FormChangeEvent(this,e);
}
public CtlLoginUser()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{//数据保存时
if (验证成功)
{
OnFormChangeEvent(e);
}
}
}
我在A窗体中的构造函数中初始化自定义控件的事伯,下面是当用户保存后刷新A窗口的部份代码: public FrmLoginUserList()
{
InitializeComponent();
this.ctlLoginUser.FormChangeEvent += new Control.CtlLoginUser.OnFormChangeEventDelegate(ctlLoginUser_FormChangeEvent); } void ctlLoginUser_FormChangeEvent(object sender, EventArgs arg)
{
this.LoadData();
//也可以调用下面的load事件
//this.FrmLoginUserList_Load(sender, arg); }
这样的话,当保存登录用户数据后,窗体的用户列表就会刷新。