I have created multiple user controls in my project and what I need to do is to be able to switch between them on a panel control.
for example, if the user click button1
You need to instantiate a new MyProject.Modules.Masters.
MyProject.Modules.Masters myMasters = new MyProject.Modules.Masters()
panel1.Controls.Add(myMasters);
This will only add a new control to panel1. If you also want to clear everything out of the panel before adding the control like you said in the question, call this first:
panel1.Controls.Clear();
You have to instantiate your controls. You will have to make sure the size is set appropriately, or for it to have an appropriate dockfill.
var myControl = new MyProject.Modules.Masters();
panel1.Controls.Add(myControl);
Isn't just easier.
panel1.Controls.Clear();
panel1.Controls.Add(new MyProject.Modules.Masters());
EDIT: Maybe try this...
panel1.Controls.Cast<Control>().ForEach(i => i.Dispose());
panel1.Controls.Clear();
panel1.Controls.Add(new MyProject.Modules.Masters());