Accéder au contrôle de formulaire depuis une autre classe C #

Je suis un débutant en studio visuel et visuel, mais je ne programme pas en général. J’ai cherché une réponse à ma question pendant 3 jours et j’en ai trouvé beaucoup, mais pour une raison étrange (je suis sûr qu’il me manque quelque chose de très évident), je ne peux pas le faire fonctionner. Je pense que c’est la question la plus fondamentale que posent les débutants comme moi. J’ai un formulaire (Form3) avec une zone de texte et un bouton (je l’ai configuré uniquement à des fins de test). Je veux peupler et lire cette zone de texte d’une autre classe. Je comprends que le moyen le plus approprié de procéder consiste à créer une propriété dans Form3.cs avec des accesseurs GET et SET. Je l’ai fait mais je ne peux pas le faire fonctionner. Je ne reçois aucun message d’erreur, mais je ne parviens pas non plus à définir la valeur de la zone de texte. Il rest juste vide. Voici mon exemple de code:

namespace WindowsFormsApplication1 { public partial class Form3 : Form { public ssortingng setCodes { get { return test1.Text; } set { test1.Text = value; } } public Form3() { InitializeComponent(); } private void Form3_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { ab(); } } public class a { public static void b() { Form3 v = new Form3(); v.setCodes = "abc123"; } } } 

Quelqu’un peut-il me prêter main-forte pour résoudre ce problème?

Le problème est que vous définissez la valeur sur une nouvelle instance du formulaire. Essayez quelque chose comme ça:

 public partial class Form3 : Form { public ssortingng setCodes { get { return test1.Text; } set { test1.Text = value; } } private A a; public Form3() { InitializeComponent(); a = new A(this); } private void button1_Click(object sender, EventArgs e) { ab(); } private void Form3_Load(object sender, EventArgs e) { } } public class A { private Form3 v; public a(Form3 v) { this.v = v; } public void b() { v.setCodes = "abc123"; } } 

Vous créez une new Form3() instance de new Form3() .
Cela n’affecte pas le formulaire existant.

Vous devez passer le formulaire en tant que paramètre à la méthode.

Essaye ça:

 public partial class Form3 : Form { /* Code from question unchanged until `button1_Click` */ private void button1_Click(object sender, EventArgs e) { ab(this); } } public class a { public static void b(Form3 form3) { form3.setCodes = "abc123"; } } 

Cela transmet l’instance actuelle du formulaire à l’autre classe afin qu’elle puisse mettre à jour la propriété setCodes . Auparavant, vous créiez une nouvelle instance de formulaire plutôt que de mettre à jour le formulaire actuel.

Envoi d’instance de formulaire à une autre classe

 Form1 objForm1=new Form1(); obj.Validate(objForm1); 

Moyen facile d’accéder aux contrôles d’une autre classe en modifiant Contrôles Private en Public dans le formulaire (Designer.cs)