利用委托在子窗体中插入数据并刷新父窗体
结果父窗体更新函数倒是顺利执行了,但是TreeView中刚插入的项目还是没有显示出来,需要再执行一次更新函数才能显示
插入的内容不能及时更新出来,怎么解决?
不是很明白你的意思,不知道是不是你在子窗体插入一个项目,然后同时刷新父窗体不就可以了
贴出代码吧,思路没有问题。为什么没有更新不确定是那的问题。
你的数据插入是在子窗体执行的还是在父窗体执行的?
是传参数到父窗体执行新增,还是在子窗体新增-->然后调用父窗体重新取treeview数据?
正确顺序应该是:
父窗体初始化委托-->弹出子窗体-->执行更新操作-->调用父窗体委托实例〔刷新treeview〕
父窗体初始化委托-->弹出子窗体-->调用父窗体委托实例、传参数-->委托实例执行更新操作并刷新treeview
能给出界面或者代码一类的东西吗,看着有些晕
C#中进行后台处理建议直接用 backgroundworker组建,很方便的。
我感觉你的代码调用顺序有问题:
按照常规做法:
1.应该将刷新界面的委托单独声明,而不是声明在窗体里面,因为按照你的目的,为的就是在添加完数据后在界面有一个更新;
public delegate UpdateHandler(参数);
//该方法应该封装在另一个类中
public class EventBroker
{
public event UpdateHandler Updated;
public void FireRefresh()
{
if(Updated != null)
{
Updated();
}
}
}
2.在你的业务代码里维护一个该委托类型的事件;
public classic Contact
{
private EventBroker Events = New EventBroker();
public void Update()
{
//todo : 更新联系人的操作
enentbroker.FireRefresh();
}
}
3.在窗体中注册该事件:
Contact.Events.Updated +=new UpdateHandler(Updatelist);
vod Updatelist()
{
//todo : 刷新界面
}
你所描述的问题,并没有添加联系人信息的代码啊!请贴出