我有两种形式..(Form1和Form 2),表单1调用form2执行某些操作,表单2包含在操作或运行时添加了一些元素的列表,一旦表单2的操作完成,我想将form2列表项复制到form1中列出...
我使用 ShowDialog()来显示form2,因为它是强制性的。
请告诉我定义列表的方法,以便我可以从form1访问它们,这些元素在form2中添加。
我没有任何代码可以粘贴...抱歉...
答案 0 :(得分:0)
您可以在Form2中声明一个公共列表,并在完成/关闭form2后将相关项目添加到此列表中。
然后可以从Form1访问它,Form1具有对Form2对象的引用。
所以在Form2中你可以有像
这样的东西public partial class Form2 : Form
{
public List<string> f2List = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
f2List.Add(f2List.Count.ToString());
}
然后从Form1你可以尝试
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
List<string> f1List = f2.f2List;
}
修改强>
请参阅操作,将项目添加到Form2中的List,以便它们在Form1中可用
答案 1 :(得分:0)
这样做:
public partial class Form2 : Form
{
public List<string> f2List = new List<string>();
private void button1_Click(object sender, EventArgs e)
{
f2List.Add(f2List.Count.ToString());
}
}
然后从Form1你可以尝试
public partial class Form1 : Form
{
list<String> copy_of_form2_list;
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
// for copy the object , we serialize and deserialize an object
try
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream output = new FileStream("temp", FileMode.OpenOrCreate, FileAccess.Write);
formatter.Serialize(output,f2.f2List);
output.Close();
}
catch
{
}
try
{
BinaryFormatter reader = new BinaryFormatter();
FileStream input = new FileStream("temp", FileMode.Open, FileAccess.Read);
fcopy_of_form2_list=((List <String>)reader.Deserialize(input));
input.Close();
if (File.Exists(@"temp"))
{
File.Delete(@"temp");
}
}
catch
{
}
List<string> f1List = copy_of_form2_list;
}