如何通过事件初始化窗体数据?

s98 2004-12-18 04:46:26
前因:
C#中的窗体事件是通过LOAD方法实现的如下:
private void Form5_Load(object sender, System.EventArgs e)
{
this.oleDbDataAdapter1.Fill(this.dataSet51);
this.oleDbDataAdapter2.Fill(this.dataSet51);
}

当我在B窗口操作改变了dataSet51中的数据后,再回到A窗口时(前提是这个窗口一直没有关闭)这时候A窗口的数据还是旧的数据。也就是没有操作以前的数据。

如果这时候我关闭A窗口再打开,就会显示新数据。

想到的一些解决办法:
我曾试图用重新绑定数据源的方法刷新数据,失败了!方法如下
private void Form5_Activated(object sender, System.EventArgs e)
{
this.oleDbDataAdapter1.Fill(this.dataSet51);
this.oleDbDataAdapter2.Fill(this.dataSet51);//当前窗口是本窗口时刷新DataGrid2
this.dataGrid2.DataMember = "tabno.tabnobustemp";
this.dataGrid2.DataSource = this.dataSet51;
}

问题就是:
不关闭窗口,通过事件达到,关闭A窗口再打开的那种效果。(也就是刷新数据)

不知道我表达清楚没有。谢谢大家!!
...全文
169 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouabc 2004-12-18
  • 打赏
  • 举报
回复
delegate方式:

formA中的方法:

//假使你是点击按钮打开formB
private void buttonShowFormB_click(object sender, EventAgrs e)
{
FormB f = new FormB()
f.OnSuccess +=new FormB.SuccessDelegate(this.OnSuccess);
f.ShowDialog(this);
}

private void OnSuccess()
{
this.oleDbDataAdapter2.Fill(this.dataSet51);//当前窗口是本窗口时刷新DataGrid2
this.dataGrid2.DataMember = "tabno.tabnobustemp";
this.dataGrid2.DataSource = this.dataSet51;
}

formB中的方法:
//以下是声名
public delegate void SuccessDelegate();//可以带参数
public event SuccessDelegate OnSuccess;

//以下是具体函数
//在formB中完成输入后,点击buttonFinish(提交)按钮更新formA数据
private void buttonFinish_click(object sender, EventAgrs e)
{
if (OnSuccess != null)
{
OnSuccess();
}
}

//愚见,希望你多试试.

zhouabc 2004-12-18
  • 打赏
  • 举报
回复
private void refreshData() //这个是formA的函数
{
this.oleDbDataAdapter2.Fill(this.dataSet51);//当前窗口是本窗口时刷新DataGrid2
this.dataGrid2.DataMember = "tabno.tabnobustemp";
this.dataGrid2.DataSource = this.dataSet51;
}

//以下代码放在你打开formB的formA的事件中,不过这个方法是要关闭formB
//的时候才会刷新
formA中的数据
B b = new B();
B.ShowDialog();
this.refreshData();


建议你使用delegate的方式.


「已注销」 2004-12-18
  • 打赏
  • 举报
回复
研究不出来,请详细讲讲!!

窗体A中提供一个
private void refreshData()
{
重新获取数据;
}

打开B的时候,如下
B b = new B();
B.ShowDialog();
this.refreshData();
follishnet 2004-12-18
  • 打赏
  • 举报
回复
你把this.dataSet51的数据清除一下,填充this.dataSet51之前调用Clean方法
试试看
zhouabc 2004-12-18
  • 打赏
  • 举报
回复
see

http://community.csdn.net/Expert/topic/3481/3481728.xml?temp=.2674829
「已注销」 2004-12-18
  • 打赏
  • 举报
回复
winform
zhouabc 2004-12-18
  • 打赏
  • 举报
回复
是winform还是webform??

110,526

社区成员

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

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

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