IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment agir sur des controles(boutons) entre plusieurs formes


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment agir sur des controles(boutons) entre plusieurs formes
    Bonjour

    pour éviter de cliquer plusieurs fois sur le même bouton je veux le contrôler par Enable (false/true) entre plusieurs formes en utilisant les delagate, mais ça ne marche pas:

    Voici un extrait :

    Dans Form1: Quand je clique sur le bouton ou je fais le traitement suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                //descativer le bouton que je vien de cliquer
                buttonLectureCarte.Enabled = false;
                //lance un thraed pour effectuer le traitemnte souhaite
                threadProcess = new Thread(new ThreadStart(lectureCarte));
                threadProcess.Start();
     
               //affichage rsultat dans la Fenêtre Fille
                Form2 LectureCarte = new Form2();
     
                // Centre la fenetre
                LectureCarte.StartPosition =      FormStartPosition.CenterScreen;            
                Sleep(1000);
                LectureCarte.Show();
    Form2: Dans Forme2 après avoir affichée les résultat de mon traitement dans la fenêtre Fille, je veux cliquer sur le bouton OK et fermer cette fenetre fille et je veux reactiver le bouton en passant par un delagate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
            public delegate void ChangeControle(Boolean state);
     
            public void ActiverBoutonLecture(Boolean state)
            {
                Form forme = new Form;
                forme.buttonLectureCarte.Enabled = state;
            }
     
            public Form2()
            {
                InitializeComponent();
            }
     
            public void Bouton_OK(object sender, EventArgs e)
            {
                this.BeginInvoke(new ChangeControle(ActiverBoutonLecture), true);
                this.Close();
                this.Dispose();
            }
    Le Bouton se désactive bien mais je n'arrive pas à le réactiver à la fin du traitement!!!!

    Quelqu'un a une idée?
    D'avance merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void ActiverBoutonLecture(Boolean state)
    {
    Form forme = new Form;
    forme.buttonLectureCarte.Enabled = state;
    }
    Pourquoi instancier une nouvelle forme ? Tu ne devrais pas utiliser la form déjà existante ?

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    Premier post, première réponse ^^

    Alors ta Form2 semble être une page de visualisation de résultat, du coup pourquoi ne pas l'ouvrir en modal (méthode ShowDialog(owner)) ? Plus besoin d'enabler/disabler le bouton de ta Form1, il sera inaccessible. Et si tu veux quand même le faire, il suffit de le rénabler après l'appel à ShowDialog, vu qu'il va bloquer le déroulement de ton event jusqu'à la fermeture de ta modale.

    Autre possibilité : tu déclares une variable membre dans Form2 de type Form1, tu crées un nouveau constructeur de Form2 qui prend en paramètre une Form1 pour référencer la Form appelante. Ainsi tu auras accès aux objets/controles de ta Form1. Tu pourras par exemple disabler le bouton dans la fonction Dispose() de Form2 (Attention : la fonction Dispose() est généralement définie dans maForm.Designer.cs ; les controles de Form1 qui doivent être visibles dans Form2 ont besoin d'être déclarés en public [ils sont private par défaut], également à trouver dans maForm.Designer.cs).

    En espérant avoir répondu à ta question
    Plus je connais de langages, plus j'aime le C.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/11/2006, 19h20
  2. Réponses: 10
    Dernier message: 18/08/2006, 12h14
  3. Réponses: 2
    Dernier message: 02/08/2006, 23h54
  4. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo