c# - 如何从另一个用户控件向窗体上的面板添加控件

标签 c# windows

我有一个 form1.cs,在那个表单中我有一个 panel1,在 form1.cs 的加载事件中,我向 panel1 添加了一个控件。现在我的问题是,我有一个名为 Numbers.cs 的控件,我需要向该 panel1 添加另一个控件,但是从按钮事件中的这个控件。我该怎么做?

public partial class Number : UserControl
{
    public Number()
    {
        InitializeComponent();
    }

    private void btnAcceptWelcome_Click(object sender, EventArgs e)
    {
          //HERE I NEED TO PASS A CONTROL TO THE PANEL1 IN FORM1.CS
          //NOT SURE HOW TO DO THIS.
    }
}

更多信息

所以基本上我有一个名为 UserControls 的文件夹,我在该文件夹中有

Numbers.cs
Letters.cs
Welcome.cs

都是用户控件,然后我有一个表单

Form1.cs

Form1.cs 实例化 Welcome,并在加载表单时将其添加到 Form1.cs 上的 Panel1。然后 Welcome.cs 有一个按钮,当我点击这个按钮时我需要切换到 Numbers.cs。但我不知道如何从 Welcome.cs 做到这一点

最佳答案

另一种方法是使用 Custom Event由 Numbers 引发并由 Form1 处理以传递控件并将其添加到面板的控件集合中。


这是添加到 UserControl1 的自定义事件的示例

Form1

public partial class Form1 : Form
{
    UserControl2 mySecondControl = new UserControl2();
    public Form1()
    {
        InitializeComponent();
        userControl11.AddControl+=new EventHandler(SwapControls);

    }

    private void SwapControls(object sender, EventArgs e)
    {
        panel1.Controls.Remove(userControl11);
        userControl11.AddControl -= new EventHandler(SwapControls);
        panel1.Controls.Add(mySecondControl);
    }
}

用户控件

public partial class UserControl1 : UserControl
{
    public event EventHandler AddControl;
    public UserControl1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.AddControl(this, new EventArgs());
    }
}

关于c# - 如何从另一个用户控件向窗体上的面板添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847808/

相关文章:

windows - 我可以通过 ssh 连接到 Windows,启动命令并让它在我注销时运行吗?

Windows 通用 (UWP) 图表库

C#如何减少重复代码?

c# - 如何将 SPFieldNumber 转换为 int

c# - NHibernate 设置 : Should I override Equals and GetHashCode?

c++ - 查找地址属于哪个堆?

C#清零前清空列表

c# - 将 EAP 包装在任务中

windows - 混帐 "fatal: .git/index: index file open failed: Permission denied"

sql-server - SQL Server 数据库无法在不同的 PC 上运行