c# - 从一个用户控件调用另一个用户控件
问题描述
我有两个用户控件 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 带到主窗体上的同一个面板。我该怎么做呢?任何帮助,将不胜感激。
解决方案
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");
}
}
}
}
推荐阅读
- r - 从 Tripadvisor 抓取经纬度
- java - 向现有 Java 多项目 Gradle 构建添加对 Kotlin 源代码的支持
- angular - FlexSearch TypeScript 无法填充索引
- python - 如何对熊猫数据框的分组数据使用不同的误差线?
- unity3d - 如何在 Unity3D 函数之间使用等待
- angular - Angular CDK Overlay:如何计算投影内容的高度/宽度
- typescript - 在较旧的 CRA 项目中使用仅类型导入/导出 - 如何更新 babel 加载器?
- caching - 如何在奇点构建中利用主机缓存?
- javascript - 防止重定向后页面重新加载
- nebular - 自定义 NbAuthStrategy 从异步调用中获取结果