专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++ Builder

C# winform 窗口刷新有关问题

发布时间:2011-06-28 14:06:38 文章来源:www.iduyao.cn 采编人员:星星草
C# winform 窗口刷新问题
在这里问一个winform的窗口刷新问题:
  有三个窗口:
  1、主界面MainForm
  2、注册界面MissionForm
  3、详细信息界面ConfigurationForm
  具体工作过程是这样的,在主界面有一个菜单栏,菜单栏带一个下拉菜单,任务ToolStripMenuItem,我在进入主界面时点击注册界面,进入注册界面后添加企业名称,添加完毕后详细信息界面自动弹出,在这个界面里把企业相关的所有信息添加完毕。添加完后,点击完成按钮(tb_refresh),详细信息界面关闭,而主菜单的下拉菜单更新。
  现在我已经成功便写了一个方法public void refresh()可以实现菜单栏更新,
  使用ToolStripMenuItem.DropDownItems.Add(".");
  我发现,在MainForm界面里运行这个没问题,菜单更新很顺利。后来老板要求实时刷新就是在点击tb_refresh后菜单栏直接更新,我原来是想在tb_refresh后加一段代码:
  MainForm mf=new MainForm();
  mf.refresh();
  this.close();
  但发现执行不顺利,菜单栏更新不了,而奇怪的是我用断点跟踪发现refresh()方法明明运行了,效果很好,但下拉菜单就是不更新(请千万别怀疑refresh方法有问题,而且我已经把它定义为公共的了)。后来有人告诉我要将ToolStripMenuItem的可见性定义为public,定义完之后还是没有改变。
  而且,我使用同样的方式刷新别的子窗体的TreeView也存在着公共方法已经运行了,但控件不刷新的问题。
  因此在这里向各位高人求教!谢谢您花费这么多时间看我的问题!
 


------解决方案--------------------

MainForm mf=new MainForm(); 
去掉 不用新建 
新的MF是刷新 新的MF 不刷新显示的MF
我一般这样做

把 public void refresh() 定义在 MainForm下面

在tb_refresh 加如下面代码就行了
((MainForm_Min)this.MdiParent).refresh();

------解决方案--------------------
把MainForm的引用传到详细信息窗口(传的方式不要问我,这个方法很多也很简单),
在详细信息窗口添加完信息后,直接调用MainForm的Refresh()方法搞定。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: