0
votes

Comment accéder aux boutons de glisser-déposer par une chaîne dans une boucle?

Je travaille sur une application de bureau qui inclut un schéma graphique et ce schéma comporte 50 boutons de glisser-déposer (ils ne sont pas alloués de manière dynamique), ils sont tous nommés similaires (par exemple, le bouton 1 est BTNP1, le bouton 2 est BTNP2, etc. ...). J'aimerais accéder à ces boutons avec une boucle pour une boucle à l'aide de la chaîne, j'ai vérifié quelques postes précédents sur ce site, mais aucune de ces réponses n'a aidé mon problème.

J'ai écrit 50 lignes de codes pour ajouter ces boutons à des contrôles et les mêmes moment où je les ajoute aux contrôles qu'ils disparaissent du schéma graphique. Plus tard j'ai essayé d'y accéder à travers la boucle, mais rien ne s'est passé, car ils disparaissent une fois que je les ajoutes aux commandes. P>

        this.Controls.Add(btnP1);
        this.Controls.Add(btnP2);
        this.Controls.Add(btnP3);
        this.Controls.Add(btnP4);
        ... and so on
        this.Controls.Add(btnP47);
        this.Controls.Add(btnP48);
        this.Controls.Add(btnP49);
        this.Controls.Add(btnP50);

for(int i = 1; i <= 50; i++)
{
this.Controls["btnP"+ i.ToString()].Visible= False;
}


1 commentaires

Essayez d'y accéder avec un simple foreach () boucle


3 Réponses :


3
votes

Pour boucler sur tous les boutons dans une commande Vous pouvez utiliser un foreach code> LOOP

foreach(Button btn in this.Controls.OfType<Button>())
{
   btn.Visible = false; //every button in you Control
}


1 commentaires

@ Ahmeshalilović Si cela fonctionnait, veuillez optimiser la réponse et l'accepter.



2
votes

Semblable à la réponse de Mario, mais j'élarposera probablement les sélecteurs si leur nommage est cohérent et filtrerait ceux qui ne peuvent pas être supprimés:

        foreach (Button btn in this.Controls.OfType<Button>().Where(x => x.Name.StartsWith("btnP") && x.AllowDrop))
        {
            btn.Visible = false;
        }


0 commentaires

0
votes

Version LINQ:

this.Controls
.OfType<Button>()
.Where(b => b.Name.StartsWith("btnP") && b.AllowDrop)
.ToList()
.ForEach(b => b.Visible = false);


0 commentaires