来自usercontrol C#的清除面板

时间:2017-05-03 04:07:20

标签: c# user-controls event-handling panel

我有一个表单和2个UserControl,当表单加载时,在load()方法中,使用以下代码加载第一个usercontrol:

private void OlvidadaContraseña_Load(object sender, EventArgs e)
{
    panel1.Controls.Clear();
    UserControl1 Env = new UserControl1();
    panel1.Controls.Add(Env);
}

如何清理面板(表单面板)并从第一个用户控件加载第二个用户控件?(从用户控件访问表单控件?)

感谢名单

1 个答案:

答案 0 :(得分:0)

如果您想要更改干净面板并使用第一个用户控件加载其他用户控件,则必须使用delegate-event。 你在第一个usercontrol

中添加控件(按钮,..)

在第一个userControl后面的代码中:

public partial class EnvioContraseña: UserControl
{
    public delegate void LoadOtherUserControl(EnvioContraseña sender);
    public event LoadOtherUserControl On_SelectButton;
    public EnvioContraseña()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (On_SelectButton != null)
            On_SelectButton(this);
    }
}

然后在mainform

后面的代码中
private void Form1_Load(object sender, EventArgs e)
    {
        panel1.Controls.Clear();
        EnvioContraseña Env = new EnvioContraseña ();
        Env.On_SelectButton += Env_On_SelectButton;
        panel1.Controls.Add(Env);
    }

    void Env_On_SelectButton(EnvioContraseña sender)
    {
        panel1.Controls.Clear();
        UserControl1 uc1 = new UserControl1();
        panel1.Controls.Add(uc1);
    }