winform如何在关闭一个窗体后刷新一个窗体.

bulls5988 2011-01-01 08:41:06
form7是一个有datagridview的窗体,当我单击button2的时候会弹出一个新窗体form7_edit,我想在关闭
form7_edit后form7重新加载应该怎么写啊?

我现在是这样现在是关闭的form7_edit

private void button2_Click(object sender, EventArgs e)
{
this.Close();
//如何刷新form7?
}
...全文
817 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyhanonline 2011-01-02
  • 打赏
  • 举报
回复
this.Refresh()
bulls5988 2011-01-02
  • 打赏
  • 举报
回复
乱了 乱了 这个委托 到底应该在哪个窗口定义啊? 我是 form7上有一个datagridview 控件 ,当我选中一条点击 edit按钮时,以form7_edit.ShowDialog()方式弹出的form7_edit。当我点击form_edit上的save按钮保存数据并form7刷新。刷新方法是form7上的formload();

这种情况,应该是哪个窗口给哪个窗口委托?看回答有在 form7_edit上委托的也有在 form7上委托的
bulls5988 2011-01-02
  • 打赏
  • 举报
回复
静态类 限制太多了
zj514394212 2011-01-02
  • 打赏
  • 举报
回复
在form7里定义一个公共方法来刷新你的窗体,把你的form7放到一个静态类里面,然后在edit关闭时使用这个方法就行了
baiyunyinv 2011-01-02
  • 打赏
  • 举报
回复
在form7_edit 窗口里定义一事件,当窗口关闭的时候触发事件就可以了。
ggw128 2011-01-02
  • 打赏
  • 举报
回复
ShowDialog是独占的模式,很易控制。只要判断一下状态,比如:DialogResult为OK时,则再次加载表格数据即可。
如是Show模式的话,常用的方法,就是在Form7_Edit中new()的时候,把Form7以参数的模式带进去,当用户在Form7_Edit中选择返回时,再调用Form7的加载数据的代码即可。
bulls5988 2011-01-02
  • 打赏
  • 举报
回复
委托需要定义在 form7还是form_edit?另外刷新必须要关闭form7吗?原来我的form7是打开着的没有关闭
bulls5988 2011-01-02
  • 打赏
  • 举报
回复
datagridview是在form7上的
wangsong145 2011-01-02
  • 打赏
  • 举报
回复
用事件实现吧,比较容易理解点,form7_edit在关闭后触发事件onSave,然后form7进行事件后处理,代码如下:


//form7_edit:

//定义委托
public delegate void Save();
//定义事件
public event Save OnSave;

public Form2()
{
InitializeComponent();
}

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


//form7:
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.OnSave += new Form2.Save(frm_OnSave);
frm.ShowDialog();
}

a252338606 2011-01-01
  • 打赏
  • 举报
回复
好复杂
bulls5988 2011-01-01
  • 打赏
  • 举报
回复
2楼老大代码看不太明白。能给下注释和思路吗?
malun666 2011-01-01
  • 打赏
  • 举报
回复
还是用委托吧。
2楼的的代码已经很详尽了
wangsong145 2011-01-01
  • 打赏
  • 举报
回复
最简便的方法,但是效率不好:
在关闭form7_edit后重新绑定form7的datagridview的数据
邋遢的土豆 2011-01-01
  • 打赏
  • 举报
回复
有一个很笨很笨的方法,遍历所有的当前窗口,判断那个是form7,然后调用数据加载的方法,重新刷新一下!
wuyq11 2011-01-01
  • 打赏
  • 举报
回复
窗体f = new 子窗体();
f.Owner = this;
f.ShowDialog();
if (f.DialogResult == DialogResult.OK)
{
//重新绑定
}
或委托实现如
public delegate void SetdataHandler();

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

private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(new SetdataHandler(Setdata));
frm.Show();
}

private void Setdata()
{
Setdata(this.label1);
}

private void Setdata(Control control)
{
if (this.Controls.Contains(control))
{

}
}
}
}


Form2代码

C# codenamespace WindowsApplication2
{
public partial class Form2 : Form
{
private SetdataHandler m_setdata;
public Form2(SetVisiableHandler setvisible)
{
InitializeComponent();
this.m_setdata = setdata;
}
private void btn_Click(object sender, EventArgs e)
{
if (this.m_setdata != null)
{
this.m_setdata();
}
}
}

Nihn 2011-01-01
  • 打赏
  • 举报
回复

......
frm.show();
btnSearch(null,null);//查询数据按钮,将数据赋给datagridview
......

110,536

社区成员

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

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

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