我知道:子窗体是不能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)
都是响应不到的.请问有什么解决的方案吗????

解决方案 »

  1.   

    现在的问题是我这边要先:form.MdiParent = this; 
    然后才能响应事件: OnRightToLeftChanged(EventArgs e) 那么问题出来了,凡是以showdialog方式显示的窗体,OnRightToLeftChanged(EventArgs e) 
    都是响应不到的. 请问有什么解决的方案吗????没明白你这到底是什么意思?
      

  2.   

    为什么不能以showdialog方式显示呢?子窗体 f=new 子窗体();
    f.ower=this;
    f.showdialog();
    if(f.DialogResult==DialogResult.Ok)
    {
    //.....
    }是不是这样?
      

  3.   

    是的.现在的问题是,如果不指定: form.MdiParent = the main form
    那么子窗体继承不到主窗体的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方法都是遵守一些接口,如果有改接口的话,意味着很多的工作必要重来,代码的修改,单元测试的修改,手工测试,自动测试等工作.....)所有,我希望的是寻求另一种解决方案,不知道还有没有.