Maison > développement back-end > C++ > Comment puis-je accéder et modifier les contrôles de formulaire à partir d'un autre formulaire en C# ?

Comment puis-je accéder et modifier les contrôles de formulaire à partir d'un autre formulaire en C# ?

Barbara Streisand
Libérer: 2025-01-07 13:41:41
original
1027 Les gens l'ont consulté

How Can I Access and Modify Form Controls from Another Form in C#?

Accéder à un contrôle de formulaire à partir d'un autre formulaire

Problème

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.

Solution des meilleures pratiques

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.

Exemple

Dans Form1 :

// ...
public int MyListBoxSelectedIndex
{
    set { lsbMyList.SelectedIndex = value; }
}
// ...
Copier après la connexion

Dans Form2 :

// ...
private Form1 mainForm; // Reference to "Form 1"

public AddNewObjForm()
{
    InitializeComponent();
    mainForm = new ControlForm();           
}

public void SomeMethod()
{
    mainForm.MyListBoxSelectedIndex = -1;
}
// ...
Copier après la connexion

Solution alternative avec réussite d'un Référence

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; }
    }
}
// ...
Copier après la connexion

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)
    {
        // ...
    }
}
// ...
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal