我知道:子窗体是不能showdialog方式显示,如果硬写会报错:
Form that is not a top-level form cannot be displayed as a modal dialog box. Remove the form from any parent form before calling showDialog.现在的问题是我这边要先:form.MdiParent = this;
然后才能响应事件: OnRightToLeftChanged(EventArgs e)那么问题出来了,凡是以showdialog方式显示的窗体,OnRightToLeftChanged(EventArgs e)
都是响应不到的.请问有什么解决的方案吗????
Form that is not a top-level form cannot be displayed as a modal dialog box. Remove the form from any parent form before calling showDialog.现在的问题是我这边要先:form.MdiParent = this;
然后才能响应事件: OnRightToLeftChanged(EventArgs e)那么问题出来了,凡是以showdialog方式显示的窗体,OnRightToLeftChanged(EventArgs e)
都是响应不到的.请问有什么解决的方案吗????
然后才能响应事件: OnRightToLeftChanged(EventArgs e) 那么问题出来了,凡是以showdialog方式显示的窗体,OnRightToLeftChanged(EventArgs e)
都是响应不到的. 请问有什么解决的方案吗????没明白你这到底是什么意思?
f.ower=this;
f.showdialog();
if(f.DialogResult==DialogResult.Ok)
{
//.....
}是不是这样?
那么子窗体继承不到主窗体的form.RightToLeft属性,那么后续的处理就会有问题了.(OnRightToLeftChanged这个事件激发不了)而设计的本意是:
所有的OnRightToLeftChanged处理都是在基页面处理,主子窗体不用额外考虑.
所有为了使得子窗体能拿到主窗体的form.RightToLeft属性就必须指定: form.MdiParent = the main form.
但是却不能适用于指定了: form.MdiParent = the main form的子窗体中.简单来说解决的方法,要么把所有这样的子窗体的打开形式改为直接form.show()(但是感觉这样改变了UI的原始意图)
要么,直接在打开子窗体的方法中直接指定:childForm.RightToLeft = parentForm.RightToLeft就行了(但是不幸的是,项目很大,这样的bug很多,而且很多地方这样的show方法都是遵守一些接口,如果有改接口的话,意味着很多的工作必要重来,代码的修改,单元测试的修改,手工测试,自动测试等工作.....)所有,我希望的是寻求另一种解决方案,不知道还有没有.