Click here to Skip to main content
15,877,675 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I have the following code:
for (int i = Controls.Count-1; i > 0; i--)
                if (Controls[i].Name.Length > 7)
                    if (Controls[i].Name.Substring(0, 7) == "NewGrid")

In another part of the code datagrids are place on the form based on the selection in a listbox. The grids are created and placed on the form in the same place right on top of each other. Then based on the selection in the listbox the gird associated with that selection is brought to the top for viewing and interaction. I have the code above when a reset button is pressed. It clears all the datagrid from the form. When I single step through the code they are indeed all removed, however which ever grid is on top at the time does not disappear from the form. I have tried moving the "this.Refresh()" line of code to after the for loop with no change. I just don't understand why all the grids would be removed from the form except the one on top.
Richard C Bishop 5-Nov-12 11:15am    
It appears to me that one control would always be left because you have i=Controls.Count-1. That would always leave one control because it is accounting for all controls but one.
Sergey Alexandrovich Kryukov 5-Nov-12 11:20am    
It would disappear if you called Remove, but you did not. Execute it under debugger; and you will be able to see everything. You always need to use debugger before asking questions like that, as well as in many other cases.

1 solution

Try this.Invalidate() instead of this.Refresh(), if all else fails you can do :
Controls[i].Visible = false;
Share this answer

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900