web-dev-qa-db-fra.com

Comment passer la valeur de chaîne d'un formulaire à l'événement de chargement d'un autre formulaire en C #

Je dois passer une valeur de chaîne de Form1:

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

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

dans l'événement Form2Load. Par exemple:

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";
}
10
AbdelMalek

Créez simplement une propriété sur la classe Form2 et définissez-la avant d'afficher Form2.

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

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

De Form1:

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

Rappelez-vous que les formulaires ne sont que des classes comme les autres

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

   }

}

À partir du formulaire 1

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


}
5
rerun

Vous ne le faites pas de cette façon. Au lieu de cela, vous pouvez transmettre votre valeur de chaîne au constructeur:

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

les autres intervenants vous ont également expliqué comment procéder avec une propriété publique.

1
slugster

Il existe un moyen plus simple de passer la chaîne de Form2 à Form1 . Créez une relation entre les formulaires et dans Form2, créez une variable de Form1, appelez-la dans Form1 et affectez-lui la valeur ....

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 .... 
0
Mani