从表单中调用
private void Form1_Load(object sender, EventArgs e)
{
var myControl = new UserControlfrm();
pnlMain.Controls.Clear();
pnlMain.Controls.Add(myControl);
}
或
UserControl myctrl = new UserControlfrm();
private void Form1_Load(object sender, EventArgs e)
{
AddPanel(pnlMain);
}
private void AddPanel(Control parent)
{
parent.Controls.Clear();
parent.Controls.Add(myctrl);
}
从其他班级打电话怎么样?这是多么正确
这是班级
class MainController
{
public void AddPanel(Panel pnl, UserControl myctl)
{
pnl.Controls.Clear();
pnl.Controls.Add(myctl);
}
}
这是主要表格
private void Form1_Load(object sender, EventArgs e)
{
MainController.AddPanel(pnlMain, myctrl);
}
其中pnlMain是Panel,myctrl是UserControl 我知道我在传递UserControl时遗漏了一点。我只是想不出来。
答案 0 :(得分:0)
一种简单的方法是:
创建全局静态类
static class Globals
{
public static FrameworkElement FE_Global = null;
}
然后,每当您创建usercontrol的实例时,都会将其传递给此全局变量
MyUserControl control = new MyUserControl();
Globals.FE_Global = control;
现在您可以在任何类别的任何地方访问它
MyUserControl cntl = FE_Global as MyUserControl;
注意:每次创建控件实例并将其传递给全局变量时,旧用户控件将被新用户控件替换。
答案 1 :(得分:0)
你不能这样打电话给你的班级:
MainController.AddPanel(pnlMain, myctrl);
除非您必须将class
更改为static
:
public static void AddPanel(Panel pnl, UserControl myctl)
{
pnl.Controls.Clear();
pnl.Controls.Add(myctl);
}
这是使用自定义用户控件并将其添加到表单的一个工作示例:
假设您已经创建了UserControl Project。
Form1中:
UserControl myctrl = new UserControlForm.UserControl1();
private void Form1_Load(object sender, EventArgs e)
{
MainController.AddPanel(panel1, myctrl);
}
类别:
class MainController
{
public static void AddPanel(Panel pnl, UserControl myctl)
{
pnl.Controls.Clear();
pnl.Controls.Add(myctl);
}
}
添加到参考UserControlForm.dll