关于WINFORM里面刷新数据的问题,求围观!!!!

ITzhangweichao 2011-02-25 11:00:45
winform 里面 form2 添加信息,添加成功后,form1更新。form1绑定的是form2所添加的信息。怎么实现Form2添加完后让form1刷新数据。是winform里面。谢谢,谢谢!
...全文
555 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
零-点 2013-02-24
  • 打赏
  • 举报
回复
引用 22 楼 qq958260506 的回复:
引用 21 楼 yalan 的回复:这么多人都回答了啊 最简单的就是form2调用form1的绑定数据方法,添加完新数据后调用form1的绑定方法即可 重新绑定是不行的.在另一个窗体里面做不到立即刷新出来. 你要重新运行那个窗体才出的来. time控制秒数是一种办法. 我也在纠结这个问题.我想知道委托怎么做. 单例模式怎么做.事件怎么做. 楼主解决了? 解决……
可以用DialogResult,form2添加完成后做个标记,再在form1中调用Load事件
Lyons 2013-02-18
  • 打赏
  • 举报
回复
引用 21 楼 yalan 的回复:
这么多人都回答了啊 最简单的就是form2调用form1的绑定数据方法,添加完新数据后调用form1的绑定方法即可
重新绑定是不行的.在另一个窗体里面做不到立即刷新出来. 你要重新运行那个窗体才出的来. time控制秒数是一种办法. 我也在纠结这个问题.我想知道委托怎么做. 单例模式怎么做.事件怎么做. 楼主解决了? 解决了的话共享个给我把.
yalan 2011-02-27
  • 打赏
  • 举报
回复
这么多人都回答了啊

最简单的就是form2调用form1的绑定数据方法,添加完新数据后调用form1的绑定方法即可
ktei2008 2011-02-27
  • 打赏
  • 举报
回复
这种问题可以考虑接口+事件。.net里有一个INotifyPropertyChanged接口,其背后是一种解决你遇到的问题的不错的模式,当然这种模式可能不适用于你的情况,但其思想是可以借鉴的。去MSDN,搜索这个接口的名字,你就知道怎么回事了。
shaofei830927 2011-02-25
  • 打赏
  • 举报
回复
方法有2
1。form2修改到数据库 关闭后 重新绑定 form1

2。form1 中写一个public方法 在form2关闭前 调用form1中的方法

方法2 又有两种传递form1 的方法
1。form1 作为form2 的ower 传递过去
2。form2 中写一个 以form1 为参数的构造函数 初始化form2的时候就传递过去
ITzhangweichao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bossma 的回复:]

1、如果form2是form1打开的,那么可以在form2关闭时,重新获取数据绑定,就实现刷新了。

2、如果想定时刷新,就放一个timer。
[/Quote]

是第一种情况。但是我在绑定成功的时候,已经再次调用了form1的bind方法了啊。但是没反应的。要不我也不来论坛求救了。。。。。
wuyq11 2011-02-25
  • 打赏
  • 举报
回复
ITzhangweichao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hhc123 的回复:]

用事件
from2添加数据后触发from1数据更新
[/Quote]

我要的是页面上能看到我添加的那条数据。现在的情况是,我添加成功返回查看时,并没有刚才添加的那个,必须关闭并重新打开方可看到刚才添加的数据!
ITzhangweichao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 flyerwing 的回复:]

刷新就是重新绑定吧.
[/Quote]

不行的。这是winform跟web的不一样的,这也是我纠结了半天的问题。
hhc123 2011-02-25
  • 打赏
  • 举报
回复
用事件
from2添加数据后触发from1数据更新
萤火架构 2011-02-25
  • 打赏
  • 举报
回复
1、如果form2是form1打开的,那么可以在form2关闭时,重新获取数据绑定,就实现刷新了。

2、如果想定时刷新,就放一个timer。
flyerwing 2011-02-25
  • 打赏
  • 举报
回复
刷新就是重新绑定吧.
  • 打赏
  • 举报
回复

public partial class Form2 : Form
{

//密码窗体

public Form2()
{
InitializeComponent();
}
public delegate void mydelegate();//定义一个委托
public static event mydelegate myevent;//定义上诉委托类型的事件


private void button1_Click(object sender, EventArgs e)
{

if (myevent != null)
{
myevent();
}

}


C# code
private void button2_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
Form2.myevent += new Form2.mydelegate(fm2_myevent);
fm2.Show();

}

private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("你好");
}
void fm2_myevent()
{
Form1_Load(null,null);
}





garfieldzf 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 happyrain2010 的回复:]
用观察者模式来做
form2修改后 给form1一个委托事件
form1在事件中实现刷新
[/Quote]

+1
叫我三三 2011-02-25
  • 打赏
  • 举报
回复

//winForm1里:
//绑定事件,我这是绑定到combobox
public void BindDDL(参数)
{
cobb_server.DataSource = Bl.LoadSSr(参数);
cobb_server.DisplayMember = "QdbIP";
cobb_server.ValueMember = "ID";
cobb_server.SelectedIndex = 0 ;
}
//winForm2里:
public winForm1 wf1;

private void 需要改变wf1的事件()
{
if (wf1 == null || wf1.IsDisposed)
{ }
else { wf1.BindDDL(参数); }
}
zzmsyt 2011-02-25
  • 打赏
  • 举报
回复
我记得有给refresh 试试
happyrain2010 2011-02-25
  • 打赏
  • 举报
回复
用观察者模式来做
form2修改后 给form1一个委托事件
form1在事件中实现刷新
chengangmax 2011-02-25
  • 打赏
  • 举报
回复
form1获得焦点事件 然后重新绑定 刷新 看看行不行
ITzhangweichao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bossma 的回复:]

引用 7 楼 itzhangweichao 的回复:
引用 2 楼 bossma 的回复:

1、如果form2是form1打开的,那么可以在form2关闭时,重新获取数据绑定,就实现刷新了。

2、如果想定时刷新,就放一个timer。


是第一种情况。但是我在绑定成功的时候,已经再次调用了form1的bind方法了啊。但是没反应的。要不我也不来论坛求救了。。。。。


……
[/Quote]
我的代码是这样写的:

public void BindList()
{
string sql="select * from Rip_Role";
RolesList.DataSource = BLL.Promissions.ExecuteDatatable(sql, CommandType.Text, null);
}

下面的是在添加成功时的:
if (BLL.Promissions.ExecuteNonQuery(sql, CommandType.Text, parms)>0)
{
PermissionManager p = new PermissionManager();
p.BindList();
this.Close();
}
ITzhangweichao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bossma 的回复:]

引用 7 楼 itzhangweichao 的回复:
引用 2 楼 bossma 的回复:

1、如果form2是form1打开的,那么可以在form2关闭时,重新获取数据绑定,就实现刷新了。

2、如果想定时刷新,就放一个timer。


是第一种情况。但是我在绑定成功的时候,已经再次调用了form1的bind方法了啊。但是没反应的。要不我也不来论坛求救了。。。。。


……
[/Quote]
是在form1上面有个按钮叫添加。单击这个按钮的时候弹出form2.在form2添加信息成功,单击关闭,回到form1,是不是应该看到刚才添加的那条数据的?可是没有。我已经在form2添加成功后写了:from1 f1=new form1();f1.bind(); this.close();但是没反应的。我的form1里面绑定数据就是调用的Bind()方法,不会有事的。
加载更多回复(2)

110,545

社区成员

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

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

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