2016-01-21 47 views
1

我有兩種形式。第一個有一個文本框。第二個有一個devexpress數據網格。 我想實現這一點: 首先點擊一個按鈕,form2打開。 如果我在窗口2數據網格點擊一排,此值應在所示form1的文本框的內部。(form1中已經打開。) I M初學者。謝謝你的幫助。C# - 兩種形式之間的數據傳輸

Form1 frm1 = new Form1(); 
frm1.textBox1.Text = gridView1.GetFocusedRowCellValue("ID").ToString(); 
frm1.Show(); 

當我這樣做時,會打開一個新窗體。我不想打開一個新的表單。 Form1已經打開。我想爲它的文本框添加值。

+1

您需要發佈更多相關的代碼。你每次創建一個新的Form1嗎?你不應該傳遞給Form1的引用嗎?然後在Form2上執行'form1.textBox1 ...' –

回答

0

最後,我解決了這個問題。

Application.OpenForms["form1"].Controls["textBox1"].Text = 
       gridView1.GetFocusedRowCellValue("ID").ToString(); 

感謝您的幫助。

0

,你可以嘗試這樣的事情。

當你點擊frm1.SimpleButton這個函數將被稱爲顯示您的窗體2。在Form2上,您必須設置InnerProperty(從您的數據網格?)a當您關閉Form2時,您可以使用此屬性。

private void SimpleButton_Click(object sender, EventArgs e) 
{ 
    using (Form2 frm = new Form2()) 
    { 
    frm.InnerProperty = "default text"; 
    DialogResult result = frm.ShowDialog(); 
    SimpleButton.Text = frm.InnerProperty; 
    } 
} 
2

通Form1中作爲參考窗口2:在表格1

在您的按鈕單擊處理程序,打開窗體2

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

窗口2碼

private Form1 frm1; 
// constructor (pass frm1 as reference) 
public Form2(Form1 frm1) { 
    this.frm1 = frm1; 
} 

//put this in your event handler for a row click in the grid 
frm1.textBox1.Text = gridView1.GetFocusedRowCellValue("ID").ToString();