如何将字符串传递给子表单?

时间:2011-08-17 13:25:58

标签: c# string forms

基本上我要做的是在主窗体上有一个字符串,它从文本框中提取它的值。

然后我生成第二个表单的模态版本,并希望在第二个表单中使用该字符串(或主表单textbox1.text值)。

主要表格

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;




namespace Tool{

    public partial class MainForm : Form
    {
        public string hostname;
        public MainForm()
        {
            InitializeComponent();
            textBox1.Text = hostname;

        }
     public void btn_test_Click(object sender, EventArgs e)
        {
            string hostname = textBox1.Text;
            SiteForm frmsite = new SiteForm();
            frmsite.ShowDialog();


        }

    }
}

” 儿童表格

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace Tool
{
    public partial class SiteForm : Form
    {
        public string hostname {get; set; }
        public SiteForm()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {
            label1.Text = this.hostname;
        }


    }
}

关于我如何做到这一点的任何建议?我知道必须有一个更简单的方法,对不起我仍然有点像菜鸟,我正在努力自学C#。

结果是当我点击子表单上的标签时它是空白的,因此我可以推断出字符串没有正确地在两个表单之间传递。

2 个答案:

答案 0 :(得分:2)

最简单的方法是在Child表单的构造函数中传递它,例如:

private string _hostname = "";

...

public SiteForm(string hostname)
{
    _hostname = hostname;
    InitializeComponent();
}

答案 1 :(得分:1)

尝试挂钩您的子表单的Load事件,并在主表单的事件处理程序中设置其hostname属性的值。

 public void btn_test_Click(object sender, EventArgs e)
    {
        string hostname = textBox1.Text;
        SiteForm frmsite = new SiteForm();
        frmsite.Load += new EventHandler(frmsite_Load);
        frmsite.ShowDialog();
    }

 public void frmsite_Load(object sender, EventArgs e)
 {
       SiteForm frmsite = sender as SiteForm;
       frmsite.hostname = this.hostname;

 }