不讨论程序背景,现在有这样的需求:
在Form1中定义了
List <Form2> d = new List <Form2>();
并定义了
1)add
2)remove两个方法。
在Form1中引用Form2时:
Form2 frm = new Form2();
frm.show();
d.add(frm);
现在,需要在Form2关闭后,执行d.remove()操作,目的是将这个实例清除。
在Form1中定义了
List <Form2> d = new List <Form2>();
并定义了
1)add
2)remove两个方法。
在Form1中引用Form2时:
Form2 frm = new Form2();
frm.show();
d.add(frm);
现在,需要在Form2关闭后,执行d.remove()操作,目的是将这个实例清除。
解决方案 »
- 用net做一个邮件系统的问题
- 请问vs2008中,ajax母版页和母版页有什么区别?
- 菜鸟求教 Form模拟软键盘
- 在 System.ArgumentException 中第一次偶然出现的“System.Windows.Forms.dll”类型的异常
- 如何实现C#登陆后过段时间永远在线,不必重新登陆
- 不知道该不该发这里关于SQL但也跟C#有关系的.
- VS2003 C# 与2005的一个Global.asax 文件如何使用的问题!
- 请教 简单数据库查询问题(在线等,解决即结帖)
- 请问在ASP.NET中,怎样用C#读取INI文件
- 我用dotnet程序,访问远程sqlServer,非常慢,一个普通的一条数据的提交也要1分多钟,有什么需要特殊注意的地方吗?
- 去掉XML格式
- 请问C#的List插入机制
d.add(frm);
frm.show();
d.remove(frm);
frm.Dispose();form2的关闭事件为:
this.close();
public partial class Form1 : Form
{
private List<Form2> d = new List<Form2>();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ } private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
d.Add(frm);
frm.Show();
} public void DoReMove(Form2 frm)
{
this.d.Remove(frm);
}
} public delegate void FormHandle(Form2 frm);
public partial class Form2 : Form
{
private Form1 m_Form1; public event FormHandle DoSomething; private void OnFormHandle(Form2 frm)
{
DoSomething(frm);
} public Form2(Form1 frm)
{
m_Form1 = frm;
InitializeComponent();
DoSomething += new FormHandle(this.m_Form1.DoReMove);
} private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.OnFormHandle(this);
}
}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我这样写是好的。
class A_form:form
{
B_form b=new B_form();
b.obj=this;//重点;
b.show();
}
class B_form:form
{
public object obj;
A_form a=(A_form)obj;
}
这样A就可以被B调用了,并且也是当前的A_form对象,如果不清楚可以发信息给我
{
public partial class Form1 : Form
{
public static List<string> d = new List<string>(); public Form1()
{
InitializeComponent(); new Form2().ShowDialog(this);
MessageBox.Show(d[0]);
}
}
}
form2:
namespace WindowsApplication25
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
List<string> d = null;
d=(List<string>)this.Owner.GetType().GetField("d").GetValue(d);
d.Add("aaa");
Close(); // 关闭form2
}
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private List<Form2> _list = new List<Form2>(); private void Button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2(_list);
_list.Add(form);
form.Show();
}
} public partial class Form2 : Form
{
private Form2()
{
InitializeComponent();
}
private readonly List<Form2> _list;
public Form2(List<Form2> list):this()
{
_list = list;
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
base.OnFormClosed(e);
_list.Remove(this);
} }
Form2 frm = new Form2();
d.add(frm);
frm.ShowDialog();
d.remove(frm);