如何将字符串值从父表单发送到子表单(反之亦然)

时间:2018-11-24 23:00:07

标签: c# visual-studio winforms mdi

这部分代码是通过使用textbox.txt的内容保存到SaveFileDialog文件的地方。我想做的事情(如代码中的注释中所述)是获取保存.txt文件的完整目录,并以childMDI形式将其保存为字符串值。

这只是为了跟踪每个childMDI关联的目录,因为它们的内容可以保存在任何地方(通过使用SaveFileDialog)。

更详细地阐述:

我有两种形式。 Form1和Form2。 Form1具有保存功能,该功能可以在Form2中获取文本框的内容并将其保存到文件中。但是,我可以创建Form2类型的多个实例。我希望能够通过保存保存txt文件时选择的目录和路径并使其与Form2的特定实例相关联来跟踪程序中这些文件的保存位置(我的想法是使用字符串“ directory”在可以存储该值的Form2中)。我知道如何将目录作为字符串获取,我只是不知道如何将其从Form1传递到Form2。

Form activeChild = this.ActiveMdiChild;
        TextBox txtBox = (TextBox)activeChild.ActiveControl;

        if (activeChild.Text == "untitled")
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "txt files (*.txt)|*.txt";
            saveFileDialog1.Title = "Save your Text File";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                using (StreamWriter writeFile = new StreamWriter(saveFileDialog1.FileName))
                {
                    writeFile.Write(txtBox.Text);
                    writeFile.Close();
                }
            }
            this.Text = Path.GetFileName(saveFileDialog1.FileName);
            activeChild.Text = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName);

            // set directory of activeChild
        }

2 个答案:

答案 0 :(得分:1)

  

正确,我目前在Form2(字符串目录)中将其作为属性

好的,因此,在具有“ //设置activeChild的目录”的位置,您将要广播以键入Form2 ,以便可以访问该属性:

if (this.ActiveMdiChild is Form2)
{
    Form2 f2 = (Form2)this.ActiveMdiChild;
    f2.Directory = System.IO.Path.GetDirectoryName(saveFileDialog1.FileName);
}

答案 1 :(得分:0)

您尝试过吗?

    if (activeChild.Text == "untitled")
            {
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                saveFileDialog1.Filter = "txt files (*.txt)|*.txt";
                saveFileDialog1.Title = "Save your Text File";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    using (StreamWriter writeFile = new StreamWriter(saveFileDialog1.FileName))
                    {
                        writeFile.Write(txtBox.Text);
                        writeFile.Close();
                    }
                    this.Text = Path.GetFileName(saveFileDialog1.FileName);
                    activeChild.Text = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName);
                }


                // set directory of activeChild
            }

this.Text = Path.GetFileName(saveFileDialog1.FileName);activeChild.Text = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName);放入saveFileDialog1 if语句内,以便在单击确定的对话框后,this.Text上将具有一个新值。