2011-06-06 90 views
9

我需要從Form1傳遞一個字符串值:如何從一種形式傳遞字符串值,以另一種形式的Load事件在C#

public void button1_Click(object sender, EventArgs e) 
{ 
    string DepartmentName = "IT"; 
    Form2 frm2 = new Form2(); 

    Frm2.Show(); 
    this.Hide(); 
} 

Form2Load事件。例如:

private void Form2_Load(object sender, EventArgs e) 
{ 
    MessageBox.Show(DepartmentName); 
    // or 
    // string sql1 = "select Service_Name from Service, " + 
    // "EmployeeService where E_Dep = '" + DepartmentName + "' " + 
    // "and s_ID = Service_ID"; 
} 

回答

24

只需在Form2類上創建一個屬性,並在顯示Form2之前將其設置。

public class Form2 
{ 
    ... 
    public string MyProperty { get; set; } 

    private void Form2_Load(object sender, EventArgs e) 
    { 
     MessageBox.Show(this.MyProperty); 
    } 
} 

從Form1中:

public void button1_Click(object sender, EventArgs e) 
{ 
    string departmentName = "IT"; 
    Form2 frm2 = new Form2(); 
    frm2.MyProperty = departmentName; 
    frm2.Show(); 
    this.Hide(); 
} 
+0

謝謝它的工作,因爲我需要 – AbdelMalek 2011-06-06 23:33:01

5

記住,形式只是班就像任何其他

public class Form2 : form 
{ 
    public string ShowMe {get;set;} 
    private void Form2_Load(object sender, EventArgs e) 
    { 
     MessageBox.Show(ShowMe); 

    } 

} 

從表1

public void button1_Click(object sender, EventArgs e) 
{ 
    string DepartmentName = "IT"; 
    Form2 frm2 = new Form2(); 
    frm2.ShowMe = DepartmentName ; 
    Frm2.Show(); 
    this.Hide(); 


} 
1

你不這樣做,那辦法。相反,你可以在構造器通過您的字符串值:

public class Form2 
{ 
    public Form2(string myParameter) : this() 
    { 
     //do whatever you need to do with myParameter 
    } 
} 

其他應答者也告訴你如何與一個公共屬性做到這一點。

-1

PRO提示

在未來,想想它在一個更通用的方法:表單只是一個類,Load事件僅僅是一個方法。

如果您試圖在兩個不是Forms的對象之間傳遞值,那麼您可以在一個類中有一個其他對象可以訪問的公共屬性。這是在rsbarro的答案的心臟,我喜歡稱之爲‘表單是班太’:)

0

有從Form2的傳遞字符串到Form1一個更簡單的方法。創建形式之間並在窗體2的關係,創建Form1的變量,需要調用Form1中的變量,並賦值給它....

public partial class Form_2 : Form 
    { 
     public readonly Form1 _form1; 
     public Form_2(Form1 form1) 
     { 
      _form1 = form1; 
      InitializeComponent(); 
     }   
     private void Form2(object sender, EventArgs e) 
     {  
      _form1.Remark = txtbx_remark.Text;     
     }// Remark is a string in Form1 .... 
相關問題