Click here to Skip to main content
15,883,623 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I want to load usercontrol1 in panel1 on pressing button1 and load usercontrol2 in panel1 on pressing button2.

How can I do that?
Posted
Updated 10-Feb-11 5:57am
v2

In Winforms, won't something like do:
C#
// Button1 click event
myPanel1.Controls.Add(userControl1)

// Button 2 click event 

myPanel2.Controls.Add(userControl2)
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 10-Feb-11 12:43pm    
This is correct, my 5 (and the Answer by Albin presents redundant detail which not always applicable, it depends on other requirements we don't know).
--SA
fjdiewornncalwe 10-Feb-11 14:57pm    
+5. This answers the question of the OP as asked.
Sandeep's answer works. But the user control should be an instance and also remove previous control in the panel.

For example

C#
private void button1_Click(object sender, EventArgs e)
{
    foreach (Control ctrl in panel1.Controls)
    {
        ctrl.Dispose();
    }
    panel1.Controls.Add(new UserControl1());
}
private void button2_Click(object sender, EventArgs e)
{
    foreach (Control ctrl in panel1.Controls)
    {
        ctrl.Dispose();
    }
    panel1.Controls.Add(new UserControl2());
}


Alternatively....

Use hide and show as below
C#
public partial class Form1 : Form
{
    private UserControl1 ctrl1;
    private UserControl2 ctrl2;
    public Form1()
    {
        InitializeComponent();
    }


    private void toggleUserCtrl(object sender, EventArgs e)
    {
        if (sender.Equals(button1))
        {
            ctrl1.Visible = true;
            ctrl2.Visible = false;
        }else if(sender.Equals(button2)){
            ctrl1.Visible = false;
            ctrl2.Visible = true;
        }
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        ctrl1 = new UserControl1();
        ctrl2 = new UserControl2();
        panel1.Controls.Add(ctrl1);
        panel1.Controls.Add(ctrl2);
        ctrl1.Visible = true;
        ctrl2.Visible = false;

        button1.Click += new EventHandler(toggleUserCtrl);
        button2.Click += new EventHandler(toggleUserCtrl);

    }
}
 
Share this answer
 
v3
Comments
rad444 10-Feb-11 12:27pm    
Thanks a lot it works
Sergey Alexandrovich Kryukov 10-Feb-11 12:47pm    
Albin, a lot of redundancy here; we don't know exact intention of OP (not very clever, if it is controlled by buttons, anyway). Also, this form of writing event handlers is gravely obsolete (don't tell me it is auto-generated by Microsoft designer.) My 4, anyway.
--SA
Albin Abel 10-Feb-11 13:27pm    
Agreed

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