2013-01-08 75 views
3

可能重複:
I would like to control Form1 from Form2將數據從Form2(textbox2)傳輸到Form1(textbox1)?

我是一個新手,C#,我無法找到我要找的在谷歌的答案,所以我在這裏希望有人可以幫助我。我只是在練習將(或通過,不管你想要的)調用從一個窗體轉移到另一個窗體。

下面是我有:

我有2種形式 - Form1Form2
Form1包含一個文本框(名爲txtForm1)和一個按鈕(名爲btnForm1)。
Form2包含一個文本框(名爲txtForm2)和一個按鈕(名爲btnForm2)。

運行應用程序後,通過單擊按鈕btnForm1,用戶打開Form2。用戶在文本框(txtForm2)中寫入的文本應該被轉移到Form1中的文本框(txtForm1,該按鈕被禁用)。

我該如何做這個轉移?請幫忙。

編輯:
好吧,我需要明確的是,這是所有的代碼,我有:

Form1中(按鈕,打開窗體2):

private void btnForm1_Click(object sender, EventArgs e) 
    { 
     new Form2().Show(); 
    } 

窗體2(關閉的按鈕Form2):

private void btnForm2_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

我沒有別的。 (我是一個新手)

+0

它是一個WinForms或WPF應用程序? –

回答

0

製作一個公共變量,並將它從你的文本框中傳遞給你的第二個表單。

public static string myVar; 
myVar = txtForm2.Text; 

,當您返回到第一種形式: txtForm1.Text = Form2.myVar;

+0

爲什麼它是'靜態'? – Rotem

+0

@Rotem我只是爲了便於訪問而做到這一點。我不應該? –

+0

只要你有實例的參考,就可以讓它從任何地方都可以訪問。使其成爲'static'意味着該值將在所有'Form2'實例中共享。 – Rotem

0

在你的窗體2,你應該有一些這樣的:

private void btnForm2_Click(object sender, EventArgs e) 
{   
    this.Hide();  
} 


public String GettxtForm2() 
{ 
    return txtForm2.Text; 
} 

現在在Form1,你可以存取權限是txtForm2喜歡的東西:

Form2 form2 = new Form2(); 
//on click btnForm1 show that form2 where you can edit the txtForm2 
private void btnForm1_Click(object sender, EventArgs e) 
    {     
     form2.Show();  
    } 
    //after you save the txtForm2 when you will focus back to form1 the txtForm1 will get the value from txtForm2 
    private void Form1_Enter(object sender, EventArgs e) 
     { 
      txtForm1.Text = Form2.GettxtForm2(); 
     } 

您可以輕鬆修改ev在所有這些邏輯都可能發生的地方......

0

Form1

public void SetTextboxText(String text) 
{ 
    txtForm1.Text = text; 
} 

private void btnForm1_Click(object sender, EventArgs e) 
{ 
    var frm = new Form2(this); // pass parent form (this) in constructor 
    frm.Show(); 
} 

Form2

Form _parentForm; 

public Form2(Form form) 
{ 
    _parentForm = form; 
} 

private void txtForm2_TextChanged(object sender, EventArgs e) 
{ 
    _parentForm.SetTextboxText(txtForm2.Text); // change Form1.txtForm1.Text 
} 
-1

試試這個;)

在Form1:

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

在窗口2:

public partial class Form2 : Form 
{ 
    public string textBoxValue; 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    public Form2(string textBoxValue) 
    { 
     InitializeComponent(); 
     this.textBoxValue = textBoxValue; 
    } 

    private void Form2_Load(object sender, EventArgs e) 
    { 
     textBox2.Text = textBoxValue; 
    }