关闭一个窗口在另一个已打开的窗口中更新数据

__pass__ 2009-04-27 06:07:02
form1中有一个treeView1控件(从数据库中读取了数据)和一个按钮,点击按钮后打开form2,在form2中更改了数据库中的记录,如何实现当关闭form2后在form1中更新数据呢?
...全文
179 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mykelly6 2009-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dongdingbaihe 的回复:]
form2用ShowDialog打开,当关闭form2时,进行判断,如果更新了重新绑定一下form1中的数据.
[/Quote]
我也经常这么写。在form1里面定义form2的关闭事件

FolderForm fForm = new FolderForm();//form2
fForm.FormClosed += new FormClosedEventHandler(FolderForm_FormClosed);
fForm.ShowDialog();

private void FolderForm_FormClosed(object sender, FormClosedEventArgs e)
{
refreshAllBooks();//update form1
loadDate(table);
}

以上代码都在form1里面
zealot1021 2009-04-28
  • 打赏
  • 举报
回复
在form2中定义委托和事件(form1中show出form2之前注册form2的事件),在form2更新了数据后发布事件,可以把刚刚更新的数据以参数形式传递回form1,或者form1捕获了这个事件后再从数据库取。
热学沸腾56 2009-04-28
  • 打赏
  • 举报
回复
你可以在打开时,把form1引用传给form2,然后在form2关闭时触发一个事件更新form1的内容
shenmixiaozi 2009-04-28
  • 打赏
  • 举报
回复
treeview 设为public
Form2 form2 = new Form2(this);//
form2.show();

在form2中
private Form1 form;
public Form2(Form1 form1)
{
this.form=form1;
InitializeComponent();
}

form2关闭事件中
form.treeview 中心更新数据。
marvelstack 2009-04-28
  • 打赏
  • 举报
回复
又是经典的窗体数据交换问题,一般你这样的场景使用Form2作为模式窗体显示比较合理。可以参考这里的文章,
谈基于.net平台windows开发中的模式窗体
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx
另外,
Windows窗体间的数据交互
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
快40的码农 2009-04-27
  • 打赏
  • 举报
回复
b.aspx中的button的客户端点击事件函数
function openA
{
var isValue=showModalDialog("c.aspx","gdgs","dialogHeight:500px;dialogWidth:800px;center: yes;location:no;resizable:no;toolbar:no;status:no");
if(typeof(isValue) != 'undefined')
windows.opener.location.reload();
}
在c.aspx页面中要设置返回值
window.returnValue=true;就行了
LemIST 2009-04-27
  • 打赏
  • 举报
回复
修改下



public class Form2
{
public event DataUpdatedHandler DataUpdated;
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
DataUpdated.Invoke(null);
}
}
LemIST 2009-04-27
  • 打赏
  • 举报
回复

public class Form1
{
public void button1_Click(...)
{
Form2 form2 = new Form2();
form2.DataUpdated += DataUpdate;
//show form2
}
public void DataUpdate(object data)
{
//update tree view according to data
}
}


public delegate void DataUpdatedHandler(object data);

public Class Form2
{
    public event EventHandler DataUpdated;

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DataUpdated.Invoke(dataObj);
}
}
a013231 2009-04-27
  • 打赏
  • 举报
回复
可以使用传递参数的方法.
    public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

int i = 0;//i初值为0

private void button1_Click(object sender, EventArgs e)
{
Form2 from2 = new Form2();
from2.ShowDialog(ref i);//Form2里重载了ShowDialog方法,ref参数
label1.Text = i.ToString();//这时可以看到i变成1了
}
}

    public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

public DialogResult ShowDialog(ref int i)//重载后的ShowDialog方法,ref参数
{
i = 1;//修改参数
return ShowDialog();
}
}
love_幸运儿 2009-04-27
  • 打赏
  • 举报
回复
form2用ShowDialog打开,当关闭form2时,进行判断,如果更新了重新绑定一下form1中的数据.
LemIST 2009-04-27
  • 打赏
  • 举报
回复
在form2中写一个事件。

111,126

社区成员

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

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

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