Maison >développement back-end >C++ >Comment transmettre des variables entre des formulaires Windows à l'aide de délégués et d'événements ou de constructeurs ?

Comment transmettre des variables entre des formulaires Windows à l'aide de délégués et d'événements ou de constructeurs ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-03 21:34:39146parcourir

How to Pass Variables Between Windows Forms Using Delegates and Events or Constructors?

Transmission de variables entre des formulaires Windows Forms à l'aide de délégués et d'événements

Dans ce scénario, où vous avez un formulaire principal et un enfant "paramètres" formulaire, une approche courante pour transmettre une variable au formulaire enfant consiste à utiliser des délégués et événements.

Étape 1 : initialiser un délégué et un événement

Dans votre formulaire principal, créez un délégué et un événement pour gérer le transfert de données :

public partial class MainForm : Form
{
    /// <summary>
    /// Delegate to send data between forms
    /// </summary>
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);

    /// <summary>
    /// Event of the delegate
    /// </summary>
    public event PageInfoHandler PageInfoRetrieved;
}

Étape 2 : Transmettez la variable dans le gestionnaire d'événements

Lorsque vous cliquez sur le Bouton "Paramètres" sur le formulaire principal, créez une instance d'argument d'événement avec la variable que vous souhaitez transmettre et déclenchez l'événement :

private void toolStripBtnSettings_Click(object sender, EventArgs e)
{
    PageInfoEventArgs args = new PageInfoEventArgs(SomeString);
    this.OnPageInfoRetrieved(args);

    SettingsForm settingsForm = new SettingsForm();
    settingsForm.ShowDialog();
}

Étape 3 : Récupérez la variable dans le formulaire enfant

Dans votre formulaire "paramètres", gérez l'événement en remplaçant l'événement correspondant handler :

public partial class SettingsForm : Form
{
    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        // Retrieve the event arguments
        PageInfoEventArgs args = this.Tag as PageInfoEventArgs;
        if (args != null)
        {
            // Access the passed variable
            string receivedText = args.PageInfo;
        }
    }
}

Utilisation d'un constructeur pour transmettre des variables

Alternativement, vous pouvez également transmettre la variable directement au constructeur du formulaire enfant :

public partial class SettingsForm : Form
{
    private string receivedText;

    public SettingsForm(string text)
    {
        this.receivedText = text;
    }
}

Dans ce cas, vous créeriez l'instance de formulaire enfant avec la variable comme argument :

SettingsForm settingsForm = new SettingsForm(SomeString);

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn