子窗体关闭时能不能调用父窗体的方法? 如题, 我子窗体是用SHOW()的方法调出来的.我想在它关闭的时候调用父窗体的一些方法.如告诉父窗体他关闭了.请问怎么设计啊? 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 form1定义一个公共变量例子:public textbox txt; txt=textbox1;form2定义一个私有变量private form1 fm=null;写个form1的构造函数public form1 myform{ set{fm=value;}}在form2构造函数中加入public form2 form2(form1 mf){ .......; fm=mf;}from2关闭事件添加if(fm!=null){ fm.txt.text="111222333"; this.close();} 可以啊 fm.ChangeTitle("新标题"); 不是子窗体有事件么?在父窗体中用子窗体的关闭事件就可以了啊。 private void button1_Click_1(object sender, EventArgs e) { Form1 frm = new Form1(); frm.Closed += new EventHandler(frm_Closed); frm.Show(); } void frm_Closed(object sender, EventArgs e) { //调用到这的话表示Form1已经关闭了 } 哦.我知道了.正是想要lake_Cx的这个方法.谢谢. 再问一个问题,就是根据上面的方法是可以调用主窗体的方法了(在新窗体关闭时,) 但是如果主窗体的方法需要参数怎么办? 如何在frm.Closed += new EventHandler(frm_Closed)里面的frm_Closed加带个参数过去? 好象加拉参数编译不通过啊 主窗口的 frm_Closed(object sender, EventArgs e)方法被调用时,相关的参数都在e中取得。不知楼主把参数加在哪里了? 我的子窗体有个编号的.例如 FORM[] F = new FORM2[10];F[1],F[2],F[3],F[4].他们相对应的编号是1,2,3,4 当我关闭3号子窗体时, 我的主窗提怎么知道我关闭拉3号? 请问--frm_Closed(object sender, EventArgs e)方法被调用时,相关的参数都在e中取得。这个e中,怎么获得窗提编号? 使用全局变量是很不好的设计.如果想使用子窗口的什么数据的话,可以把sender参数as成子窗口类型, 就能使用子窗口的数据了.public class ParentForm : Form{ private void MyFunction() { ChildForm child = new ChildForm(); child.Closed += new EventHandler(child_Closed); child.Show(); } private void child_Closed(object sender, EventArgs e) { ChildForm a = sender as ChildForm; MessageBox.Show(a.MyAttribute); // 这里就可以使用子窗口对象的数据了 }}public class ChildForm : Form{ public String MyAttribute { get { return "ChildForm "; } }} 在父窗体的unload事件中这样写this.Close();this.DialogResult == DialogResult.OK;子窗体中这样写Form 父窗体=new Form()if(父窗体.DialogResult == DialogResult.OK){ 执行事件} 基于13楼的方法, 想要在关闭时知道是哪个窗口被关闭, 我能想到的有两种方法.1. 给每个子窗口增加一个ID属性, 关闭时判断这个属性即可.2. 拿到sender这个对象,和你的Form数组的所有元素比较, 哪个相等即是哪个. 大侠请进,时而出现Object reference not set to an instance of an object.异常 网络舆情系统 求教一个多线程的问题 关于vs2005的一个很纳闷的问题 【求教】线程 c# savedialog 使用问题 读取CSV文件中的某一行数据?急救! 键盘远程响应 如何对付反编译工具? C#如何实现Widows XP下Wi-Fi共享? 【求助】c# 模拟托盘单击事件 累,控件如果用同一个同一个Click EventArgs区分。 C# Win程序实现实时显示
定义一个公共变量
例子:public textbox txt;
txt=textbox1;form2
定义一个私有变量
private form1 fm=null;写个form1的构造函数
public form1 myform
{
set{fm=value;}
}在form2构造函数中加入
public form2 form2(form1 mf)
{
.......;
fm=mf;
}from2关闭事件添加
if(fm!=null)
{
fm.txt.text="111222333";
this.close();
}
在父窗体中用子窗体的关闭事件就可以了啊。
private void button1_Click_1(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.Closed += new EventHandler(frm_Closed);
frm.Show();
} void frm_Closed(object sender, EventArgs e)
{
//调用到这的话表示Form1已经关闭了
}
这个e中,怎么获得窗提编号?
如果想使用子窗口的什么数据的话,可以把sender参数as成子窗口类型, 就能使用子窗口的数据了.
public class ParentForm : Form
{
private void MyFunction()
{
ChildForm child = new ChildForm();
child.Closed += new EventHandler(child_Closed);
child.Show();
} private void child_Closed(object sender, EventArgs e)
{
ChildForm a = sender as ChildForm;
MessageBox.Show(a.MyAttribute); // 这里就可以使用子窗口对象的数据了
}
}public class ChildForm : Form
{
public String MyAttribute
{
get
{
return "ChildForm ";
}
}
}
this.Close();
this.DialogResult == DialogResult.OK;
子窗体中这样写
Form 父窗体=new Form()
if(父窗体.DialogResult == DialogResult.OK)
{
执行事件
}
1. 给每个子窗口增加一个ID属性, 关闭时判断这个属性即可.
2. 拿到sender这个对象,和你的Form数组的所有元素比较, 哪个相等即是哪个.