There are well-known problems with UserControls removed from a FlowLayoutPanel not being actually disposed of, resulting in, finally, out-of-memory errors.
The recommended strategy for removing and disposing UserControls from the FlowLayoutPanel is:
int yourIndex;
Control toRemove = yourTableLayoutPanel.Controls[yourIndex];
yourTableLayoutPanel.Controls.Remove[i];
toRemove.Dipose();
If you are creating an destroying lots of Controls in the FlowLayoutPanel, I'd suggest that for convenience you keep a Dictionary<