C# TableLayoutPanel retirer des controls

Bonjour

Je suis en train de faire un logiciel WinForms en C#, et j'ai un tableau qui doit afficher des éléments. Le problème, c'est que quand je veux retirer des éléments pour actualiser ce tableau, je n'ai pas trouvé de méthode efficace.
Il y a:
table.Controls.Remove(table.GetControlFromPosition(x, y));

Mais cette méthode semble très longue, et prend plusieurs secondes, et plus quand il y a plus de controls. Donc pour actualiser mon tableau, voir les labels disparaitre un par un ce n'est pas terrible. Quelqu'un a une solution?
Merci d'avance

4 réponses

  1. Bonjour

    comment choisis tu quel contrôle supprimer?

    Edit: quand tu les ajoutes leur donnes tu un nom?

    Quand j'étais petit, la mer Morte n'était que malade.
    George Burns
    1. Bonjour, merci pour ta réponse
      Je les retrouve grace à
      table.GetControlFromPosition(x, y)

      je pense que c'est cette opération qui prend beaucoup de temps
      Non, je ne leur donne pas de nom ils sont créés dans mon code
  2. je n'ai pas dû être assez explicite, que tu trouves le contrôle à supprimer avec la méthode GetControlFromPosition, tu l'as déjà écrit, ce que je voudrais savoir c'est comment tu détermines quel x et quel y supprimer.

    Pour le nom, tu peux leur en donner même par le code.
    1. J'ai une boucle for pour l'y et une pour l'x. En fait je veux supprimer tous les controls de mon tableau sauf ceux de la première ligne. Et oui je sais que je peux leur donner un nom par le code

      Ce n'est pas un très grand tableau (4 * 20) donc ça ne devrait pas être le problème
    2. As tu essayé avec RemoveAt ? de l'index 4 à 19?
      Sinon, tu copies les 4 premiers labels dans un tableau de label, tu fais un Clear et tu remets les 4 sauvegardés.
    3. @Utilisateur anonymeBonjour
      Non ça ne marche pas mieux, mais il me semble que j'ai mal identifié le problème, j'ai l'impression qu'il y a une latence à chaque fois que le tableau s'actualise. Quand je le redimentionne j'ai ce même problème, peut être que ça vient du calcul des pourcentages que doit occuper chaque case.
      En tout cas merci pour ta réponse. Pour ce nouveau problème je créée une nouvelle question?
  3. Non, ça reste dans le même thème.
    Comment charges tu le panel et calcules tu tes pourcentages?
    1. Je place le panel dans l'éditeur, et les colonnes et lignes aussi. Le pourcentage est directement proposé par le panel quand je les place, j'ai trois modes qui sont "Absolute" (en pixels), "Percent" que j'utilise et "AutoSize". Ce n'est donc pas moi qui ait codé ce système de pourcentage
    2. Poste le code
  4. Je ne sais pas exactement ce que tu cherches à faire mais tu peux essayer avec la méthode Dispose()

    foreach (Control ctrl in tablelayoutpanel.controls)
    {
    if (ctrl is Label)
    ctrl.dispose();
    }