从一个字符串到另一个c#

本文关键字:字符串 另一个 一个 | 更新日期: 2023-09-27 18:00:48

我已经研究了一段时间,但似乎无法获得它。我必须从一个表单到另一个表单获取字符串,但它不起作用,我尝试使用get,但它只是抛出"get"在上下文中不存在。这是我的密码。这是在主窗体上:

  public string SavePoint()
  {     
        string settings = "";
        string archive = "";
        if (rb_Backup.Checked)
        {
            settings = "backup";
        }
        else if (rb_Restore.Checked)
        {
            settings = "restore";
        }
        else if (rb_Sync.Checked)
        {
            settings = "sync";
        }
        if (cb_Archive.Checked)
        {
            archive = "true";
        }
        else
        {
            archive = "false";
        }
        string savePoint = txt_From.Text + "'r'n" + txt_To.Text + "'r'n" + settings + "'r'n" + archive;
        return savePoint;
  }

这是在试图访问数据的表单上:

    private void btn_Save_Click(object sender, EventArgs e)
    {
        frm_Main mainForm = new frm_Main();
        string saveData = mainForm.SavePoint();
        string savePath = AppDomain.CurrentDomain.BaseDirectory + "''Profiles";
        if (!Directory.Exists(savePath))
        {
            Directory.CreateDirectory(savePath);
        }
        StreamWriter saveFile = new StreamWriter(savePath + "''" + txt_Save.Text + ".txt");
        saveFile.WriteLine(saveData);
        saveFile.Close();
        this.Close();
    }

我正在学习,这也是我制作这个软件的原因之一。

致以最诚挚的问候,

Scobbo

从一个字符串到另一个c#

而不是等到btn_Save_Click方法尝试从父窗体获取信息;让父窗体在首次创建子窗体时传递信息。

只需在子窗体上创建这样一个简单的属性:

public string SavePath {get;set;}

然后在第一次创建时设置主窗体:

SaveDialog child = new SaveDialog();
child.SavePath = SavePoint();
child.ShowDialog();

您可以在第二个表单上设置所有者,然后从主表单中显示它。然后您可以从第二个窗体访问主表单。

示例是-打开第二个表单的主表单按钮:

private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2();
            frm.Owner = this;
            frm.ShowDialog();
        }

然后我们有第二个表单-我们想从主表单中提取数据:

private void button1_Click(object sender, EventArgs e)
        {
            //Get our owner form i.e: Form1.cs
            Form1 frm = (Form1)this.Owner;  // Here we cast the owner form as Form1
            MessageBox.Show(frm.teststr()); // You can access the functions/procedure from the main form here
        }

您不想继续创建主窗体的新实例,因为新实例意味着在当前主窗体上完成的所有数据/处理都设置为默认值。所以你想把当前的Main Form对象传递给Second Form。这就是我们在这里所做的。

要获得点,应该使用属性而不是方法。这应该看起来像

public string SavePoint
{
   get
   {
       string settings = "";
       string archive = "";
       if (rb_Backup.Checked)
       {
           settings = "backup";
       }
       else if (rb_Restore.Checked)
       {
           settings = "restore";
       }
       else if (rb_Sync.Checked)
       {
           settings = "sync";
       }
       if (cb_Archive.Checked)
       {
           archive = "true";
       }
       else
       {
           archive = "false";
       }
       string savePoint = txt_From.Text + "'r'n" + txt_To.Text + "'r'n" + settings + "'r'n" + archive;
       return savePoint;
   }
}