【问题标题】:Saving form2 from form1 button从 form1 按钮保存 form2
【发布时间】:2019-08-07 22:04:28
【问题描述】:

我目前有一个名为 form1 的表单,它允许我创建另一个名为 form2 的表单,form2 有一个可以输入文本的文本框。在 form1 上,我有一个保存按钮,可以将 form2 中的文本保存为 .txt 文件。我目前在我的最后一个步骤中遇到问题,我当前的方法不存在,我不确定如何在不弄乱其他任何东西的情况下解决这个问题。

目前我已经为我的按钮完成了以下代码,所以我可以保存

private void bmSaveAs_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveText = new SaveFileDialog();
            saveText.InitialDirectory = @"C:\";
            saveText.Filter = "TXT Files(*.txt;)|*.txt;";
            if (saveText.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                using (StreamWriter write = new StreamWriter(File.Create(saveText.FileName)))
                    write.Write(TextFile);           
            }

        }

现在在我的第二个表单(form2)下我只有以下代码

 public  partial class TextDocumentForm : Form
    {
        public TextDocumentForm()
        {
            InitializeComponent();
        }
        public string TextFile
        {
            get { return tbTextDoc.Text; }
            set { tbTextDoc.Text = value; }      
        }
    }

我当前的问题在于我的public string TextFile,我收到错误,即当前方法在表格 1 中不存在。作为一个相当新的人,我不确定如何继续,并且会感谢任何帮助,因为我被难住了暂时这样。

【问题讨论】:

  • 您需要一个 form2 的实例来调用从中获取 TextFile 属性。你在哪里创建form2?如果您在 form1 的成员函数中执行此操作,您可以将 form2 的引用存储在 form1 的成员变量中,然后在您的另存为单击处理程序中执行 write.Write(form2.TextFile)
  • Form2 现在是从 form1 按钮创建的(我使用的是 MDI,所以它被创建为子窗体。)。我已经尝试了几个步骤,但我仍然迷路了。

标签: c# winforms


【解决方案1】:

public string TextFile是Form2的成员,当然form1不知道。你可以试试这个:

public partial class Form1 : Form
    {
        Form2 frm2;
        public Form1()
        {
            InitializeComponent();
            frm2 = new Form2();
        }

        private void ShowForm2(object sender, EventArgs e)
        {         
            frm2.Show();
        }

        private void Save(object sender, EventArgs e)
        {
            MessageBox.Show(frm2.TextFile);
        }
    }

【讨论】:

  • 感谢您的回复,因为这对您有很大帮助。我似乎遇到的最后一个问题是让 streamwriter 将文本从我的文本框中写入新保存的文件(目前我可以将文本文档保存到我的桌面,但它是空的。)我试图使用 write.Write(frm2.TextFile);
  • @Adrian:我看这里没问题,你需要在write.Write(frm2.TextFile);这一行调试,并检查frm2.TextFile的值。还有一件小事,你保存到 C:\,可能需要管理员权限。
  • 我设法修改它并保存,但如果我尝试创建新表单,我将无法创建(我的创建按钮现在只创建一个 form2 实例,即使我多次单击它。) .如果我关闭该表单并单击我的新表单按钮,我会收到一条异常消息“无法访问已处置的对象。对象名称:'TextDocumentForm'。我最好的猜测是我如何检索文本框输入是一个问题,但我不太确定。
  • 也许你应该隐藏而不是关闭表单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多