Accéder aux contrôles d'un formulaire dans un autre peut être difficile. Considérez deux formulaires, "Formulaire 1" avec une ListBox et "Formulaire 2" qui doit accéder à sa propriété SelectedIndex.
Plutôt que d'utiliser un modèle Singleton, envisagez de transmettre une référence d'une forme à une autre. Cela permet une communication directe entre eux.
Dans Form1 :
// ... public int MyListBoxSelectedIndex { set { lsbMyList.SelectedIndex = value; } } // ...
Dans Form2 :
// ... private Form1 mainForm; // Reference to "Form 1" public AddNewObjForm() { InitializeComponent(); mainForm = new ControlForm(); } public void SomeMethod() { mainForm.MyListBoxSelectedIndex = -1; } // ...
Une autre approche consiste à passer une référence de Form1 à Form2, permettant à Form2 de modifier la propriété LabelText du contrôle Label de Form1 :
Form1:
// ... public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this); // Pass reference to Form2 frm.Show(); } public string LabelText { get { return Lbl.Text; } set { Lbl.Text = value; } } } // ...
Formulaire2 :
// ... public partial class Form2 : Form { public Form2() { InitializeComponent(); } private Form1 mainForm = null; public Form2(Form callingForm) { mainForm = callingForm as Form1; // Cast to Form1 InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { this.mainForm.LabelText = txtMessage.Text; // Modify LabelText } private void button1_Click(object sender, EventArgs e) { // ... } } // ...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!