2015-04-01 157 views
0

我有兩種形式,Form1和Form2。如何將數據從子窗體傳遞給父窗體

Form1中 - 家長 窗體2 - 兒童

Form1中包含以下,

文本框 - 它加載的文件路徑, 的DataGridView - 加載其數據的文件, ButtonNext - 當按鈕cliked它打開窗體2,

窗體2包含以下,

BrowseButton - 它從目錄broswe的文件Textbox - 它然後顯示路徑 ButtonFinish - 它會將您重新映射到Form1

*現在我想從Form2(子)從Form1(父)訪問datagridview。現在我可以broswe Form2上的文件,當我點擊完成時,我可以看到我的文件路徑Form1(父)從文本框,但沒有databeing加載。

如何將Form1上的數據加載到datagridview中?

這是我的代碼到目前爲止..

Form2。

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(); 
    } 
+0

可能重複http://stackoverflow.com/questions/4887820/how-do-you-通過對象從窗體1到窗體2和回到窗體1) – Dmitry 2015-04-01 12:55:05

+0

它看起來重複,但不同的問題 – prosts 2015-04-01 12:57:35

回答

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; 
     } 
    } 
} 

乾杯

的[你如何通過從Form1以Form2的對象並返回到Form1?](
+0

喲!...你救了我的生命,我已經堅持了這幾天。 謝謝! – prosts 2015-04-01 14:36:16

相關問題