Accéder à mes textbox
moi67671
Messages postés
2
Statut
Membre
-
mli07 Messages postés 5 Statut Membre -
mli07 Messages postés 5 Statut Membre -
Bonjour
J'ai écris un programme (plutôt commencé) avec 2 textbox et un compteur. Dans la première textbox s'affiche le compteur quand il est pair, dans la seconde lorsqu'il est impair.
C'est pas terminé mais à partir d'une classe j'arrive pas à accéder à mes textbox. Ça marque qu'elles n'existent pas dans le contexte actuel en les soulignant en rouge.
Voici le code que j'ai déjà écris :
Est ce que quelqu'un peut m'expliquer pourquoi ça souligne et ce que je dois faire ?
Merci d'avance
J'ai écris un programme (plutôt commencé) avec 2 textbox et un compteur. Dans la première textbox s'affiche le compteur quand il est pair, dans la seconde lorsqu'il est impair.
C'est pas terminé mais à partir d'une classe j'arrive pas à accéder à mes textbox. Ça marque qu'elles n'existent pas dans le contexte actuel en les soulignant en rouge.
Voici le code que j'ai déjà écris :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplicationThreadModeGraphique
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static int compteur;
Thread ThreadA = new Thread(new ThreadStart(Evenements.TacheA));
Thread ThreadB = new Thread(new ThreadStart(Evenements.TacheB));
private void buttonDepart_Click(object sender, EventArgs e)
{
ThreadA.Start();
ThreadB.Start();
}
}
public class Evenements
{
public static int compteur;
public static void TacheA()
{
if (compteur < 20)
compteur++;
else
compteur = 0;
}
public static void TacheB()
{
if (compteur % 2 == 0)
textBoxPair.Text = Convert.ToString(compteur);
else
textBoxImpair.Text = Convert.ToString(compteur);
}
}
}
Est ce que quelqu'un peut m'expliquer pourquoi ça souligne et ce que je dois faire ?
Merci d'avance
A voir également:
- Accéder à mes textbox
- Comment accéder à wetransfer gratuitement ? - Guide
- Comment acceder au presse papier - Guide
- Acceder messagerie hotmail - Guide
- Accéder à appdata - Guide
- Acceder a la corbeille - Guide
2 réponses
Bonjour,
Click sur ta textBox regarde les propriétés et change "Modifiers" de private à public.
Bon dev.
Atloka
Click sur ta textBox regarde les propriétés et change "Modifiers" de private à public.
Bon dev.
Atloka
Bonjour,
Tu vas rencontrer un problème d'opération inter-thread en procédant de la sorte...
Même si tu rends t'es textboxs publics il va falloir passer ton objet form1 dans t'es classes.
Ne rend pas t'as classe Evenements static, il va falloir passer ton objet Form1 dans le constructeur.
Voici le code un peu modifier
Le invoke permet d'appeler des méthodes ou d'un réaliser des changements sur des objets qui ne sont pas dans le même fil de processus.
Tu vas rencontrer un problème d'opération inter-thread en procédant de la sorte...
Même si tu rends t'es textboxs publics il va falloir passer ton objet form1 dans t'es classes.
Ne rend pas t'as classe Evenements static, il va falloir passer ton objet Form1 dans le constructeur.
Voici le code un peu modifier
// --------------------------
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void ModifierCompteur(int compteur)
{
if (compteur % 2 == 0)
textBoxPair.Text = Convert.ToString(compteur);
else
textBoxImpair.Text = Convert.ToString(compteur);
}
private void buttonDepart_Click(object sender, EventArgs e)
{
// Un seul thread suffit
Evenements evenements = new Evenements(this);
Thread th = new Thread(new ThreadStart(evenements.TachePrincipal));
}
}
// ----------------------------------------------
public class Evenements
{
private int compteur;
private Form1 form1;
private delegate void InvokeCompteur(int compteur);
public Evenements(Form1 form)
{
this.form1 = form;
}
public void TachePrincipal()
{
if (compteur < 20)
compteur++;
else
compteur = 0;
//
form1.Invoke(new InvokeCompteur(form1.ModifierCompteur), new object[] { compteur });
}
}
Le invoke permet d'appeler des méthodes ou d'un réaliser des changements sur des objets qui ne sont pas dans le même fil de processus.