如何将数据从子窗体传递到父窗体

时间:2015-04-01 12:51:47

标签: c# winforms datagridview

我有两种形式,Form1和Form2。

Form1 - Parent Form2 - 儿童

Form1包含以下内容,

Textbox - 它加载文件路径, Datagridview - 它使用其数据加载文件, ButtonNext - 当按钮cliked它打开Form2,

Form2包含以下内容,

BrowseButton - 它为目录中的文件提供了支持 文本框 - 然后显示路径 ButtonFinish - 它会将你回到Form1

*现在我想从Form2(子)访问Form1(Parent)中的datagridview。现在我可以浏览Form2上的文件,当我点击完成后,我可以从文本框中看到Form1(父级)上的文件路径,但没有加载数据库。

如何将Form1上的数据加载到datagridview?

到目前为止这是我的代码..

窗体2。

    public frmInputFile(frmMain_Page _frmMain)
    {
        InitializeComponent();
        this._frmMain = _frmMain;
    }

private void btnBrowse_Click(object sender, EventArgs e)
 {
     BrowseFile();
}

 private void btnFinish_Click(object sender,EventArgs e)
    {

        _frmMain.SetFilepath(txtInputfile.Text);
        _grid.Rows.Clear();          //cant get the grid from form1
        string PathSelection = "";
        if (txtInputfile.Text.Length > 0)
        {
            PathSelection = txtInputfile.Text;
        }
        oDataSet = new DataSet();
        XmlReadMode omode = oDataSet.ReadXml(PathSelection);

        for (int i = 0; i < oDataSet.Tables[2].Rows.Count; i++)
        {
            string comment = oDataSet.Tables["data"].Rows[i][2].ToString();
            string font = Between(comment, "[Font]", "[/Font]");
            string datestamp = Between(comment, "[DateStamp]", "[/DateStamp]");
            string commentVal = Between(comment, "[Comment]", "[/Comment]");
            string[] row = new string[] { oDataSet.Tables["data"].Rows[i][0].ToString(), oDataSet.Tables["data"].Rows[i][1].ToString(), font, datestamp, commentVal };
            _grid.Rows.Add(row);
        }
       this.Hide();
        Program._MainPage.Show();

Form1中

    private void btnLoadfile_Click(object sender, EventArgs e)
    {
        frmInputFile frmInput = new frmInputFile(this);
        frmInput.Show();

    }
    public void SetFilepath(string Filepath)
    {
        txtInputfile.Text = Filepath;
    }
    //I dont know how i can handle the gridview here
    public void Loadgrid(string LoadGrid)
    {
        Gridview_Input.ToString();
    }

1 个答案:

答案 0 :(得分:0)

首先要做的事情。请避免重复发帖。

_grid这里做的变量是什么?将数据从一种形式传递到另一种形式的方式看起来很奇怪。不过,我试图模拟你的问题,我能够从From2添加Form1中的行。代码清单如下。需要注意的是,我在设计器的DataGridView中添加了四列。在您的情况下,您可能希望以编程方式添加列。

 public partial class Form2 : Form
{
    public Form2(Form1 frm1)
    {
        InitializeComponent();
        Form1Prop = frm1;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form1Prop.SetFilepath("HIHI");

        Form1Prop.DataGridPropGrid.Rows.Add("HIH", "KI", "LO", "PO");
    }

    public Form1 Form1Prop { get; set; }
}




 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2(this);
        frm2.Show();
    }

    public void SetFilepath(string filepath)
    {
        textBox1.Text = filepath;
    }

    public DataGridView DataGridPropGrid
    {
        get
        {
            return dataGridView1;
        }
    }
}

干杯