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
1076 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!

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