bonjour à vous! je poste ici car ça a rapport avec ce qui est dit dans le topic même si ça remonte à assez loin...... si vous avez une réponse!!!!! je me lance ^^
je crée dynamiquement des controls que je range dans une list. quand je supprime des éléments tout va bien le réindexage se passe nikel. Le problème c' est pour l affichage des controls dans ma form. vu qu'ils sont créé dynamiquement, j'incrémente une variable pour que les controls ne se superposent pas.... quand je supprime et que je fais un réaffichage..... ça ne fonctionne pas. Voici le code qui sera certainement plus clair que moi:
private void button3_Click(object sender, EventArgs e) { Button suppr = new Button(); Button edit = new Button(); CheckBox ma_checkBox = new CheckBox(); TextBox ma_textBox = new TextBox(); Label titre = new Label(); object mon_objet = new object(); int i=0;// s'incrémente si le modulo est nul =>on est bien sur la fin d'une ligne //à afficher suppr = (Button)sender; int index = mes_elements.IndexOf(suppr); edit = (Button)mes_elements[(index - 2)]; nowForm = (Form10)mes_elements[(index - 1)]; ma_checkBox = (CheckBox)mes_elements[index - 3]; ma_textBox = (TextBox)mes_elements[index - 4]; titre = (Label)mes_elements[index - 5]; MessageBox.Show(mes_elements.IndexOf(suppr).ToString()); mes_elements.RemoveRange(mes_elements.IndexOf(suppr)-5,6); int indexfinal = mes_elements.Count ; MessageBox.Show(indexfinal.ToString());
Controls.Remove(titre); Controls.Remove(edit); Controls.Remove(suppr); Controls.Remove(nowForm); Controls.Remove(ma_textBox); Controls.Remove(ma_checkBox);
for (int j = 1; j == indexfinal; j++) { if (j % 6 == 0) i = i++;
switch (mes_elements[j].Name) { case "button2": mes_elements[j].Location = new System.Drawing.Point(270, 204 + 20 * i); break; case "button3": mes_elements[j].Location = new System.Drawing.Point(301, 204 + 20 * i); break; case "titre": mes_elements[j].Location = new System.Drawing.Point(31, 102 + 20 * i); break; case "textBox1": mes_elements[j].Location = new System.Drawing.Point(72, 98 + 20 * l); break; case "checkBox1": mes_elements[j].Location = new System.Drawing.Point(274, 101 + 20 * l); break; }
Controls.Add(mes_elements[j]);
} l = l - 1;
}
Je comprends pas trop pourquoi ça refuse de réafficher correctement. Si jamais vous avez une solution faites signe!!!!!
|