窗体数据回传

chenxisen 2006-09-06 11:23:34
各位好:
小弟问一小问题,请各位帮忙解决.
假设有两窗体A ,B
A窗体中有空间 listbox1 ,button1,
B窗体中有空间 listbox2 ,button2,
我现在想实现的是想在A窗体中通过点button1 ,显示窗体B,在B中做些操作,然后再把B窗体中的
listbox2的所有项全部回传到A并在listbox1中显示 ,
  好象有个showdialog()的方法,请赐教!

...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhuiITren 2006-09-06
  • 打赏
  • 举报
回复
怎么样得到其他窗体 的数据集???
dlzhangln 2006-09-06
  • 打赏
  • 举报
回复
回传窗体的时候,如果有数据集的话,大部分要重新邦定一下,另外要保证窗体的唯一,翻一下前几天的帖子,很多
dlzhangln 2006-09-06
  • 打赏
  • 举报
回复
修改构造函数
或者创建属性
或者做静态类
这三个方法都可以
dlzhangln 2006-09-06
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
这里的第二个例子
wuhuiITren 2006-09-06
  • 打赏
  • 举报
回复
路过,我也想明白,这些值又怎么传给listBox1呢??
dlzhangln 2006-09-06
  • 打赏
  • 举报
回复
说明:在这个例子中我们的两个窗体都加了一个ListBox用来显示ArrayList中的内容。

主窗体中控件:listBoxFrm1,buttonEdit;

子窗体中控件:listBoxFrm2,textBoxAdd,buttonAdd,buttonEdit,buttonOK。

这次我们用ArrayList来作为传递数据,在Form1中定义类数据成员:

private ArrayList listData1;

在构造函数中增加了对listData1进行内存分配,并生成数据最终绑定到listBoxFrm1,

public Form1()

{

InitializeComponent();

this.listData1 = new ArrayList();

this.listData1.Add("DotNet");

this.listData1.Add("C#");

this.listData1.Add("Asp.net");

this.listData1.Add("WebService");

this.listData1.Add("XML");

this.listBoxFrm1.DataSource = this.listData1;

}

另外,对修改按钮点击事件处理函数的修改如下:

private void buttonEdit_Click(object sender, System.EventArgs e)

{

Form2 formChild = new Form2(this.listData1);

formChild.ShowDialog();

this.listBoxFrm1.DataSource = null;

this.listBoxFrm1.DataSource = this.listData1;

}

相对与主窗体,对子窗体作相应修改,也在Form2中增加了类数据成员:

private ArrayList listData2;

用来保存对主窗体中listData1的引用。

修改构造函数:

public Form2(ArrayList listData)

{

InitializeComponent();

this.listData2 = listData;

foreach(object o in this.listData2)

{

this.listBoxFrm2.Items.Add(o);

}

}

这里让listData2同listData1指向同一个引用;另外没有对listBoxFrm进行绑定,采用了填充。

好了,下面是对数据操作的时候了。

添加处理函数代码如下:

private void buttonAdd_Click(object sender, System.EventArgs e)

{

if(this.textBoxAdd.Text.Trim().Length>0)

{

this.listData2.Add(this.textBoxAdd.Text.Trim());

this.listBoxFrm2.Items.Add(this.textBoxAdd.Text.Trim());

}

else

MessageBox.Show("请输入添加的内容!");

}

删除处理代码如下:

private void buttonDel_Click(object sender, System.EventArgs e)

{

int index = this.listBoxFrm2.SelectedIndex;

if(index!=-1)

{

this.listData2.RemoveAt(index);

this.listBoxFrm2.Items.RemoveAt(index);

}

else

MessageBox.Show("请选择删除项或者没有可删除的项!");

}

退出Form2子窗体:

private void buttonOK_Click(object sender, System.EventArgs e)

{

this.Close();

}

编译运行程序,在子窗体中对数据进行修改,关闭后,主窗体就会显示更新后的数据。
JasonHeung 2006-09-06
  • 打赏
  • 举报
回复
button1_Click (...)
{
B b = new B();
if (DialogResult.OK == b.ShowDialog())
{

//获取list2的数据
for (int i = 0 ; i < b.listBox2.GetItemCount(); ++i)
{
for (int j = 0 ; j < b.listBox2.GetColumnCount(); ++j)
{
string s = b.listBox2.GetItemText(i,j);
}
}
}
}
happyhippy 2006-09-06
  • 打赏
  • 举报
回复
FormA Click事件:
FormB b = new FormB(listBoxA)
b.Show();//或者ShowDialog();也可以

FormB:
ListBox refListBoxA;//定义一个引用,指向FormA中的listBoxA;
public FormB(ListBox listBoxA)//构造函数接受一个ListBox实例
{
this.refListBoxA = listBoxA;
//其他初始化代码;
}
//FormB中可以对refListBoxA进行任何操作,且对其的修改可以影响到FormA
Knight94 2006-09-06
  • 打赏
  • 举报
回复
参看
http://blog.csdn.net/Knight94/archive/2006/08/22/1104957.aspx

110,539

社区成员

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

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

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