SCM子系统可以实例化多个子页签工作台Bug
解决办法:
- BaseModule项目同级目录下新增SCM.BaseModule项目
- 在ClientMainUIImpl项目中引用SCM.BaseModule.dll
- 在ClientMainUIImpl -> MainForm.cs -> MainForm_MdiChildActivate修改如下
private void MainForm_MdiChildActivate(object sender, EventArgs e)
{
//1、获取到当前激活的窗体
//2、判断激活窗体的MyMdiChildForm 是否为null,或者disposed,否则激活那一个
if (null == this.ActiveMdiChild) return;
if (this.ActiveMdiChild.GetType().FullName.StartsWith("BaseModule.CompositeGenericForm`2")
|| this.ActiveMdiChild.GetType().FullName.StartsWith("SCM.BaseModule.CompositeGenericForm`2"))
{
PropertyInfo pi = this.ActiveMdiChild.GetType().GetProperty("frmList");
object obj = pi.GetValue(this.ActiveMdiChild, null);
if(obj is PopupModalChildFormBase)
{
PopupModalChildFormBase baseForm = obj as PopupModalChildFormBase;
if (null != baseForm.MyMdiChildForm && !baseForm.MyMdiChildForm.IsDisposed)
{
baseForm.MyMdiChildForm.Activate();
}
}
else if (obj is SCM.BaseModule.PopupModalChildFormBase)
{
SCM.BaseModule.PopupModalChildFormBase baseForm = obj as SCM.BaseModule.PopupModalChildFormBase;
if (null != baseForm.MyMdiChildForm && !baseForm.MyMdiChildForm.IsDisposed)
{
baseForm.MyMdiChildForm.Activate();
}
}
}
else if (this.ActiveMdiChild is PopupModalChildFormBase)
{
PopupModalChildFormBase baseForm = this.ActiveMdiChild as PopupModalChildFormBase;
if (null != baseForm.MyMdiChildForm && !baseForm.MyMdiChildForm.IsDisposed)
{
baseForm.MyMdiChildForm.Activate();
}
}
}
PS:详见
https://data.shengjingyun.com/svn/iWMSKeHu/iWMSV5.0.0SP1卡尔美
版本:29395
文档更新时间: 2021-09-16 10:53 作者:谢伟凡