我在一个面板中嵌入usercontrols并使用 DevExpress Navigator 控件从一个控件导航到另一个控件。我所担心的是对这种方法有什么影响?
我会举出一些我关注的例子,但后来我不需要问这个问题......
我有一个主要表单, ShellForm 左侧有一个停靠的导航器控件,其余部分有一个停靠的 Panel Control 。然后,当单击链接时,我会在面板中停靠用户控件,例如 ucSearchPage 。
public partial class ShellForm : XtraForm
{
private ucSearch searchPage = new ucSearch();
private ucEnrollments enrollmentPage = new ucEnrollments();
private ucGeneral generalInfoPage = new ucGeneral();
private ucContacts contactPage = new ucContacts();
public ShellForm()
{
InitializeComponent();
}
private void ShellForm_Load(object sender, EventArgs e)
{
this.pnlShellHost.DockControl(this.searchPage);
}
private void navSearch_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
this.pnlShellHost.DockControl(this.searchPage);
}
private void navEnrollment_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
this.pnlShellHost.DockControl(this.enrollmentPage);
}
DockControl()的代码如下 - >
public static void DockControl(this Control control, UserControl userControl)
{
userControl.Dock = DockStyle.Fill;
control.Controls.Clear();
control.Controls.Add(userControl);
}
这种方法有什么影响吗?它只是计划愚蠢吗?
我是那些必须学会在走路前跑步的程序员之一,所以我倾向于趴在脸上!
总共将有大约30个用户控件。
欢迎并赞赏任何见解!
答案 0 :(得分:3)
IMO嵌入用户控件根本不是一个坏主意。事实上,这正是他们的意思。因为每个控件都从相同的基类继承,所以您可以使用Composite pattern构建控件的树结构。这将允许您创建任何您想要的东西。
如果你想到一个基本的网页,这实际上就是你正在做的事情:将一个元素放在另一个元素中,或嵌入它们。您可以在其他div中使用多个div等。当您将用户控件嵌入到基本HTML时嵌入用户控件时,这基本上就是您所做的。
希望这有帮助。
编辑:要解决评论中的问题...我认为从数据输入的角度来看,您不会遇到任何问题。原因是您为注册控制和搜索控件使用不同的用户控件。我假设你正在覆盖每个用户控件中的OnLoad事件吗?回发后发生的事情是,如果加载了搜索控件,搜索的OnLoad将被点击,而如果加载了搜索控件,则会点击注册的OnLoad。
由于用户控件的多态性,您可以单独处理这些控件的数据。