在表单中,我有几个按钮(单选按钮),每个按钮都调用不同的 UserControl 。因此,它们会以如下形式动态添加到表单中:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void Something()
{
// Do something in the Form
// Etc etc
}
private void Rb1_CheckedChanged(object sender, EventArgs e)
{
if (!PnContent.Controls.Contains(Uc1.Instance))
{
PnContent.Controls.Add(Uc1.Instance);
Uc1.Instance.Dock = DockStyle.Fill;
Uc1.Instance.BringToFront();
}
else
{
Uc1.Instance.BringToFront();
}
}
private void Rb2_CheckedChanged(object sender, EventArgs e)
{
if (!PnContent.Controls.Contains(Uc2.Instance))
{
PnContent.Controls.Add(Uc2.Instance);
Uc2.Instance.Dock = DockStyle.Fill;
Uc2.Instance.BringToFront();
}
else
{
Uc2.Instance.BringToFront();
}
}
}
(注意:“ PnContent”只是表单中的面板)
现在在 UserControl(Uc1)中,我拥有以下功能:
public partial class Uc1 : UserControl
{
public Uc1()
{
InitializeComponent();
}
private static Uc1 _instance;
public static Uc1 Instance
{
get
{
if (_instance == null)
{
_instance = new Uc1();
}
return _instance;
}
}
// Etc etc
private void Btn1_Click(object sender, EventArgs e)
{
// Do something in UserControl
// Etc etc
}
}
有问题。当触发 Usercontrol 中的 Btn1_Click 时,我需要从表单中调用公共无效 Something()。< / p>
这是我的代码的摘要。
UserControl 中的 Btn1 的实际操作是在数据库中保存一条记录。然后,在执行此操作之后,有必要重新加载记录列表。但是 Datagrid 位于 Form1 上,而方法 Something()可以加载所有数据
使用相同的想法解决此问题的任何技巧吗?