Transmission de données entre Windows Forms
Lors de la gestion de plusieurs formulaires dans une application Windows Forms, vous pouvez rencontrer des situations dans lesquelles vous devez partager des données entre eux. Cet article aborde le problème du passage d'une variable d'un formulaire principal à un formulaire « paramètres », permettant au nouveau formulaire d'afficher ces informations.
Utilisation de délégués et de gestionnaires d'événements
Le code que vous avez fourni dans le formulaire principal utilise des délégués et des gestionnaires d'événements pour envoyer des données au formulaire de paramètres. Un délégué est un type qui définit une signature pour une méthode avec des paramètres d'entrée et de sortie spécifiques. En attribuant un délégué à un gestionnaire d'événements, vous pouvez enregistrer des méthodes à appeler lorsque l'événement se produit.
Dans ce cas, le formulaire principal crée un délégué PageInfoHandler avec un paramètre d'entrée de type PageInfoEventArgs. La classe PageInfoEventArgs contient les données (dans ce cas, une chaîne) que vous souhaitez transmettre au formulaire de paramètres. Lorsque vous cliquez sur le bouton "Paramètres", le gestionnaire d'événements (OnPageInfoRetrieved) est invoqué, qui appelle les méthodes enregistrées (dans ce cas, PageInfoRetrieved).
Récupération des données dans le formulaire de paramètres
Dans le formulaire des paramètres, vous devez définir une propriété ou une méthode qui vous permet d'accéder aux données transmises depuis le formulaire principal. Dans la solution suggérée, un constructeur est utilisé pour transmettre la chaîne au formulaire de paramètres. Ce constructeur stockera la chaîne dans une variable membre privée, accessible ensuite via une méthode getter publique.
Exemple de code complet
L'exemple de code complet est le suivant suit :
MainForm.cs
public partial class MainForm : Form { public delegate void PageInfoHandler(object sender, PageInfoEventArgs e); public event PageInfoHandler PageInfoRetrieved; private void toolStripBtnSettings_Click(object sender, EventArgs e) { PageInfoEventArgs args = new PageInfoEventArgs(SomeString); OnPageInfoRetrieved(args); SettingsForm settingsForm = new SettingsForm(SomeString); settingsForm.ShowDialog(); } private void OnPageInfoRetrieved(PageInfoEventArgs args) { if (PageInfoRetrieved != null) PageInfoRetrieved(this, args); } }
SettingsForm.cs
public class SettingsForm : WinForm { private string m_Data; public SettingsForm(string data) { m_Data = data; } public string Data { get { return m_Data; } } }
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!