2013-07-17 82 views
0

我有兩種形式,分別是Form1和Form2。我有兩個字段的文件名,文件路徑和一個按鈕,當點擊需要到表格2。表單2有一個數據網格,其中包含文件名和文件路徑以及一個OK按鈕。如果Form1中的行已經有文件路徑和文件名,它應該被填充到Form 2中,如果我在Form2中操縱了這些數據並點擊Ok按鈕,數據應該以形式1更新。由於我是C#的新手,我發現這有點難。您可以請我提供一些關於如何解決這個問題的指導以兩種形式在Datagrid中傳遞數據

回答

1

原油(而不是推薦)的方式是使兩個數據網格視圖'公開'。然後,當您退出一個數據網格上的單元格時,您會檢查它是否「髒」,如果是這樣,則會處理兩個網格的更新。如果一個表單從另一個表單啓動,則一個更新會讀取此.ParentForm.dgFileNames.Rows ....並且另一個將是this.frmSubordinate.dgFileNames.Rows ...

更好的方法是公開方法,並且每次更新一個網格上的行時調用其他窗體的相應更新方法。

實際上,每個表單都應該具有用戶定義的添加和更新事件,以定義調用其他表單的方法。這假設這兩種形式總是在更新將被輸入到網格中的情況下打開。這涉及爲將通過事件傳遞的eventData定義接口和基類。

0

您可以使用Form's Modal結果輕鬆完成此操作。

理想的情況下你的窗體2應該是這樣的:

public partial class Form2 : Form 
{ 
private string _currentValue; 

//Property to get value from Form1 
public string CurrentValue 
{ 
    get { return _currentValue; } 
    set { _currentValue = value; } 
} 

public Form2() 
{ 
    InitializeComponent(); 
    //set the dialog result to be as OK when button is clicked 
    button1.DialogResult = System.Windows.Forms.DialogResult.OK; 
} 

public string getSelectedValue() 
{ 
    return dataGridView1[<the field name you need to get>, dataGridView1.CurrentRow.Index].Value.ToString(); 
} 
} 

在Form1,稱其爲:

Form2 form2 = new Form2(); 
form2.CurrentValue = <Your Value from Form1>; 

If (form2.DialogResult() == DialogResult.OK) 
{ 
textBox1.Text = form2.getSelectedValue(); 
} 
相關問題