none
C# MDI应用程序 RRS feed

  • 问题

  • 创建两个窗体,一个设置为主窗口frmContainer,另一个为子窗口frmChild,子窗口上有个控件richTextBoxText,如何在主窗口菜单中获取当前活动子窗口的richTextBoxText控件的Text属性,我用this.ActiveMdiChild.richTextBoxText.Text为什么不行?

    public frmEditor(frmContainer parent)
        {
          InitializeComponent();
          MdiParent = parent;
        }

    public frmContainer()
        {
          InitializeComponent();
          frmEditor newForm = new frmEditor(this);
          newForm.Show();

        }

    2013年8月21日 4:49

答案

全部回复

  • 因为C#不同于VB.NET,它不允许你直接对某个控件进行赋值操作。

    所以建议(任选其一方法):

    1)公开子窗体的TextBox属性,这样可以通过此窗体实例直接操作。

    2)或者你确认某个子窗体的确有某个控件,那么可以使用Controls遍历器属性:

    (this.ActiveMdiChild.Controls["Name of RichTextBox"] as RichTextBox).xxxProperty = Assigned Value;


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年8月21日 5:01
    版主
  • 同时你也可以参考这个文章的源码:http://www.cnblogs.com/Caceolod/articles/1016452.html

     思路是@ProgrammingVolunteer 介绍的


    If my post is helpful,please help to vote as helpful, if my post solve your question, please help to make it as answer. My sample

    • 已标记为答案 yuweiping77 2013年8月23日 12:14
    2013年8月22日 2:53
  • frmEditor form = this.ActiveMdiChild as frmEditor;

    if(form)

    {

         form.richTextBoxText.Text;

    }

    需要保证 richTextBoxText 是 frmEditor 的 public 成员。

    • 已标记为答案 yuweiping77 2013年8月23日 12:14
    2013年8月22日 3:14
  • 这个方法比较好
    2013年8月23日 12:15
  • 自定义一个属性 public string MdiChildText ,使用get、set设置子窗口的richTextBox的Text属性。

    1.仅为使用richTextBoxText的Text属性公开整个richTextBox不太好。

    2.遍历的方法直观但要知道控件名,而且要转换。

    3.新定义一个属性还可以区分开richTextBox的Text属性的改变是由父窗口引发还是子窗口引发,例如在MdiChildText属性set中调用方法MessageBox("父窗口赋值!")然后才给richTextBox的Text设置值,此外还能产生其他效果。

    2013年8月24日 14:52