Remarque: Dans WinFormProblème lors de la suppression dynamique des contrôles
Je fais face à un problème dans TableLayoutPanel. J'ajoute et supprime le contrôle dynamicall en utilisant TableLauoutPanel. Mon problème est, si je supprime le contrôle au milieu (à savoir j'ai ajouté TextBox1, TextBox2 et TextBox3 et maintenant j'ai supprimé TextBox2) à ce moment d'autres contrôles ne sont pas redimensionnés correctement. Lorsque le dernier contrôle (par exemple TextBox3) est supprimé, son redimensionnement correctement. J'ai joint mon code ici. Quel est le problème?
/// ICI TBL est le TableLayoutPanel
private void AddText_Click(object sender, EventArgs e)
{
TextBox txt = new TextBox();
txt.MouseDoubleClick += new MouseEventHandler(txt_MouseDoubleClick);
txt.Multiline = true;
txt.Dock = DockStyle.Fill; NEWADD(txt);
}
private void NEWADD(Control ctrl)
{
tbl.RowCount += 1;
tbl.RowStyles.Add(new RowStyle(SizeType.Percent, 100F/tbl.RowStyles.Count));
tbl.Controls.Add(ctrl, 0, tbl.RowStyles.Count - 1);
foreach (RowStyle row in tbl.RowStyles)
{
row.SizeType = SizeType.Percent;
row.Height = 100F/(tbl.RowStyles.Count);
}
}
private void RemoveControl(Control ctrl)
{
tbl.RowCount -= 1;
tbl.Controls.Remove(ctrl);
tbl.RowStyles.Clear();
for (int i = 0; i < tbl.Controls.Count; i++)
{
tbl.RowStyles.Add(new RowStyle(SizeType.Percent, 100F /(tbl.RowStyles.Count +1)));
}
foreach (RowStyle row in tbl.RowStyles)
{
row.SizeType = SizeType.Percent;
row.Height = 100F/(tbl.RowStyles.Count);
}
tbl.Refresh();
}
void txt_MouseDoubleClick(object sender, MouseEventArgs e)
{
RemoveControl(sender as Control);
}