首页 > 解决方案 > 从一个用户控件调用另一个用户控件

问题描述

我有两个用户控件 usercontrol_1 和 usercontrol_2,使用单击事件我将 usercontrol_1 引入主窗体上名为 panel_screen 的面板。

private void btn_Click(object sender, EventArgs e)
        {

            if (!panel_screen.Controls.Contains(usercontrol_1.Instance))
            {
                panel_screen.Controls.Add(usercontrol_1.Instance);
                usercontrol_1.Instance.Dock = DockStyle.Fill;
                usercontrol_1.Instance.BringToFront();
            }
            else
                usercontrol_1.Instance.BringToFront();
        }

同样,我想使用 usercontrol_1 上的按钮(单击事件)将 usercontrol_2 带到主窗体上的同一个面板。我该怎么做呢?任何帮助,将不胜感激。

标签: c#

解决方案


    namespace WindowsFormsApp1
    {
        public delegate void MyEventDelegate(object sender, string name);

public partial class Form1 : Form
{
    usercontrol_1 _ctrl1 = null;
    usercontrol_2 _ctrl2 = null;

    public Form1()
    {
        InitializeComponent();

        _ctrl1 = new usercontrol_1();
        _ctrl1.Dock = DockStyle.Fill;
        _ctrl1.userControlButtonClicked += userControlButtonClicked;
        _ctrl2 = new usercontrol_2();
        _ctrl2.Dock = DockStyle.Fill;
        _ctrl2.userControlButtonClicked += userControlButtonClicked;
        this.Load += Form1_Load;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        userControlButtonClicked(_ctrl1, "1");
    }

    private void userControlButtonClicked(object sender, string name)
    {
        panel1.Controls.Clear();
        if (sender.Equals(_ctrl1))
        {
            panel1.Controls.Add(_ctrl2);
        }
        else if (sender.Equals(_ctrl2))
        {
            panel1.Controls.Add(_ctrl1);
        }
    }
}

}

    namespace WindowsFormsApp1
    {
public partial class usercontrol_1 : UserControl
{
    public event MyEventDelegate userControlButtonClicked;
    public usercontrol_1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MyEventDelegate med = userControlButtonClicked;
        if (med != null)
        {
            med(this, "1");
        }
    }
}

}

    namespace WindowsFormsApp1
    {
public partial class usercontrol_2 : UserControl
{
    public event MyEventDelegate userControlButtonClicked;
    public usercontrol_2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        MyEventDelegate med = userControlButtonClicked;
        if (med != null)
        {
            med(this, "2");
        }
    }
}
    }

推荐阅读