两个窗体传值的问题``````````````````````

PSSonyXbox 2009-11-11 08:39:45
Form1窗体里的内容传到Form2里,然后添加了,当退出Form2窗体时,怎么叫Form1窗体的内容自动更新呀?
不是数据库内容
是一个ArrayList
...全文
668 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
云飞扬candy 2011-07-26
  • 打赏
  • 举报
回复
没看懂!
ljb07976513524 2009-11-22
  • 打赏
  • 举报
回复
学习一下!
Lezen 2009-11-12
  • 打赏
  • 举报
回复
.....
Lezen 2009-11-12
  • 打赏
  • 举报
回复
。。
vibut 2009-11-12
  • 打赏
  • 举报
回复
答案都有了 还想大家怎么回答呢
blackvis 2009-11-12
  • 打赏
  • 举报
回复
form1中arr数组中的内容已经改变。 你的意思应该是form1界面上的内容需要刷新吧,那你退出form2的时候,调用一下form1的显示arr数组内容的函数就OK.
nashina 2009-11-12
  • 打赏
  • 举报
回复
对于C#来说,你把一个ArrayList数组传递给Form2时,只是把地址传过去了,挡在Form2改变其对应变量的值时,Form1中的ArrayList数组的内容也就被改变了;
你可以做下测试,C#中的所有类现在都支持这种操作,从VS2005开始
nashina 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 server126 的回复:]
很感谢谢你们的回答,你们没有明白我的意思


    我在Form1里有一个ArrayList数组  里面有 arr (值有: "aa","bb"....)
  我把Form1里的arr传到Form2里,
然后我在Form2里又添加了值如:"cc","dd"等,
当我退出Form2窗体的时候,
怎么在Form1窗体里arr的值自动更新

[/Quote]

你把ArrayList数组设置为public的,在Form2里也定义这么一个私有变量,打开Form2时把Form1的ArrayList数组传给Form2的那个私有变量,在Form2中改变私有变量值后,Form1
里的自动就刷新了
wukehao_2008 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 server126 的回复:]
很感谢谢你们的回答,你们没有明白我的意思


    我在Form1里有一个ArrayList数组  里面有 arr (值有: "aa","bb"....)
  我把Form1里的arr传到Form2里,
然后我在Form2里又添加了值如:"cc","dd"等,
当我退出Form2窗体的时候,
怎么在Form1窗体里arr的值自动更新

[/Quote]

需要在Form2里更新Form1的值,那就只能用委托啦`````
PSSonyXbox 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fengling2001 的回复:]
没有更新是因为你需要ResetBindings
[/Quote]

怎么写?谢谢 我是新手
fengling2001 2009-11-11
  • 打赏
  • 举报
回复
没有更新是因为你需要ResetBindings
fengling2001 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fengling2001 的回复:]
C# code
主窗体:privatevoid button1_Click(object sender, EventArgs e)
{
Form2 f2=new Form2();
f2.Closed+=new EventHandler(this.CloseForm2);
frm.ShowDialog();
}privatevoid CloseForm2(object sender, EventArgs e)
{
Form2 f2=(Form2)sender;if(f2.IsRefreshMain)
{this.textBox1.Text= f2.textbox2.Text;
}
}

子窗体privatebool _IsRefreshMain;publicbool IsRefreshMain
{set
{this._IsRefreshMain= value; }get
{returnthis._IsRefreshMain; }
}privatevoid Close_Event(object sender, EventArgs e)
{this._IsRefreshMain=true;this.Close();
}
[/Quote]
仔细看看
PSSonyXbox 2009-11-11
  • 打赏
  • 举报
回复
简单点说吧,
意思是Form2里的值是赋了,
但是在退出Form2的时候
Form1里的内容不自动更新

是""""不自动更新"""""
不是没有把值传过来

帮一帮呀,,搞不出来我就不睡觉了 55555.........
zhongjiekangping 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
arr设置为全局变量,自动更新
或arr为属性,设置属性
[/Quote]
c# 提供全局变量吗
zhongjiekangping 2009-11-11
  • 打赏
  • 举报
回复
答案都有了 还想大家怎么回答呢
PSSonyXbox 2009-11-11
  • 打赏
  • 举报
回复
?????没有回答吗?
gui0605 2009-11-11
  • 打赏
  • 举报
回复
Form1里的arr设为属性,通过属性去修改
PSSonyXbox 2009-11-11
  • 打赏
  • 举报
回复

//主窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;

namespace ShowForm1
{
public partial class FormShowEmployees : Form
{
private ArrayList arr;
public FormShowEmployees()
{
InitializeComponent();
arr = new ArrayList();
arr.Add("AAA");
arr.Add("BBB");
arr.Add("CCC");
arr.Add("DDD");
arr.Add("EEE");
this.listboxshowEmployees.DataSource = arr;

}

private void buttonEdit_Click(object sender, EventArgs e)
{
FormEditEmployees fedit = new FormEditEmployees(arr);
// fedit.Owner = this;
fedit.ShowDialog(this);
}

private void buttonExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}


//子窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ShowForm1
{
public partial class FormEditEmployees : Form
{
private System.Collections.ArrayList arr;
public FormEditEmployees( System.Collections.ArrayList arr1)
{
InitializeComponent();

arr = arr1;
foreach (object o in arr1)
{
this.listboxshow.Items.Add(o.ToString());
}

}

private void buttonAdd_Click(object sender, EventArgs e)
{
string str = this.textadd.Text.Trim().ToString();
if (str != "")
{
arr.Add(str);
this.listboxshow.Items.Add(str);
//FormEditEmployees fee = new FormEditEmployees();
//fee.Owner = this;

}
else
{
MessageBox.Show("Erorr");
}
}

private void buttondel_Click(object sender, EventArgs e)
{
int id = this.listboxshow.SelectedIndex;
if (id != -1)
{
arr.RemoveAt(id);
this.listboxshow.Items.RemoveAt(id);
}
else
{
MessageBox.Show("Erorr");
}
}

private void buttonClear_Click(object sender, EventArgs e)
{
//FormShowEmployees fshow = (FormShowEmployees)this.Owner;
this.Close();
}
}
}






我想实现 的功能是 子窗体退出后
主窗体的ListBox里的内容自动更新
PSSonyXbox 2009-11-11
  • 打赏
  • 举报
回复
哎,,我还是没有说明白 呀
我发出我的代码吧
hhc123 2009-11-11
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 事件委托2
{
public partial class Form1 : Form
{
Form2 frm = new Form2();
public Form1()
{
InitializeComponent();

frm.Show();
frm.Hide();
}
public delegate void mydelegate(string text);//定义一个委托
public static event mydelegate myevent;


private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (myevent != null)
{
myevent(this.listBox1.SelectedItem.ToString());

}
}

private void button1_Click(object sender, EventArgs e)
{
frm.Show();
}
}
}



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 事件委托2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
Form1.myevent += new Form1.mydelegate(fm2_myevent);
}
void fm2_myevent(string str)
{
this.listBox1.Items.Add(str);

}
}
}


加载更多回复(6)

110,579

社区成员

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

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

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