• MDI父窗体

    MDI窗体设计器本身是这个样子
    image.png
    之后首先在父窗体里定义静态全局变量窗体一和窗体二
    eg:public static ReadFile readFileForm;
    public static StationPic stationPic;
    之后用的时候实例化就行
    readFileForm = new ReadFile();

    image.png

    • 一些必须的方法

    1)判断MDI子窗体是否存在
    private bool HaveOpened(Form MdiParentForm,string MdiChildFormType)
    {
    bool bReturn = false;
    for(int i = 0;i {
    if(MdiParentForm.MdiChildren[i].GetType().Name==MdiChildFormType)
    {
    MdiParentForm.MdiChildren[i].BringToFront();
    bReturn = true;
    break;
    }
    }
    return bReturn;
    }

    2)防止同时生成多个同一类型的子窗体
    public void OpenChildForm(Form formChild)
    {
    formChild.Name = formChild.GetType().FullName;
    bool isOpened = false;
    foreach (Form form in this.MdiChildren)
    {//如果要显示的子窗体已经在子窗体的子窗体数组中,就把新建的多余的销毁
    if (formChild.Name == form.Name)
    {
    form.Activate();
    formChild.Dispose();
    isOpened = true;
    break;
    }
    }
    if (!isOpened)
    {
    formChild.MdiParent = this;
    formChild.Show();
    }
    }

    • 例子1:想让父窗体的打开按钮读取文件并且赋值于子窗体的TextBox中

    可以直接将在子窗体里定义一个字符串还有属性
    public string StrValue
    {
    get { return this.Content.Text; }
    set { this.Content.Text = value; }
    }
    在父窗体的打开文件里写读文件的方法
    OpenFileDialog dialog = new OpenFileDialog
    {
    Multiselect = true,//该值确定是否可以选择多个文件
    Title = “请选择文件夹”,
    Filter = “文件(.xml,.txt)|.xml;.txt”
    };
    if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
    fileName = dialog.FileName;
    }
    if (fileName.Contains(“txt”))
    {
    readFileForm.StrValue = FormatTxtText(dialog.FileName);
    }
    }
    readFileForm.Text = dialog.SafeFileName;