SCM子系统可以实例化多个子页签工作台Bug

解决办法:
  1. BaseModule项目同级目录下新增SCM.BaseModule项目
  2. 在ClientMainUIImpl项目中引用SCM.BaseModule.dll
  3. 在ClientMainUIImpl -> MainForm.cs -> MainForm_MdiChildActivate修改如下
  1. private void MainForm_MdiChildActivate(object sender, EventArgs e)
  2. {
  3. //1、获取到当前激活的窗体
  4. //2、判断激活窗体的MyMdiChildForm 是否为null,或者disposed,否则激活那一个
  5. if (null == this.ActiveMdiChild) return;
  6. if (this.ActiveMdiChild.GetType().FullName.StartsWith("BaseModule.CompositeGenericForm`2")
  7. || this.ActiveMdiChild.GetType().FullName.StartsWith("SCM.BaseModule.CompositeGenericForm`2"))
  8. {
  9. PropertyInfo pi = this.ActiveMdiChild.GetType().GetProperty("frmList");
  10. object obj = pi.GetValue(this.ActiveMdiChild, null);
  11. if(obj is PopupModalChildFormBase)
  12. {
  13. PopupModalChildFormBase baseForm = obj as PopupModalChildFormBase;
  14. if (null != baseForm.MyMdiChildForm && !baseForm.MyMdiChildForm.IsDisposed)
  15. {
  16. baseForm.MyMdiChildForm.Activate();
  17. }
  18. }
  19. else if (obj is SCM.BaseModule.PopupModalChildFormBase)
  20. {
  21. SCM.BaseModule.PopupModalChildFormBase baseForm = obj as SCM.BaseModule.PopupModalChildFormBase;
  22. if (null != baseForm.MyMdiChildForm && !baseForm.MyMdiChildForm.IsDisposed)
  23. {
  24. baseForm.MyMdiChildForm.Activate();
  25. }
  26. }
  27. }
  28. else if (this.ActiveMdiChild is PopupModalChildFormBase)
  29. {
  30. PopupModalChildFormBase baseForm = this.ActiveMdiChild as PopupModalChildFormBase;
  31. if (null != baseForm.MyMdiChildForm && !baseForm.MyMdiChildForm.IsDisposed)
  32. {
  33. baseForm.MyMdiChildForm.Activate();
  34. }
  35. }
  36. }
  1. PS:详见
  2. https://data.shengjingyun.com/svn/iWMSKeHu/iWMSV5.0.0SP1卡尔美
  3. 版本:29395
文档更新时间: 2021-09-16 10:53   作者:谢伟凡