【发布时间】:2019-05-19 16:48:19
【问题描述】:
我正在使用一个带有菜单的基本表单,这样我就不必为整个应用程序重新编写代码。
这个表单本质上叫做 StudentBase.cs
然后我有另一个名为 StudentProfile 的表单,它继承自 StudentBase
public partial class StudentProfile : StudentBase
{
public string selectedPage;
}
这会继承 StudentBase 中的菜单,我不必重新做菜单。
在菜单上,有各个表单的按钮。
假设我按下学生资料我用它来导航:
private void btnProfile_Click(object sender, EventArgs e)
{
//I don't want the page to reload if it is the current page
if (selectedPage != "Profile")
{
StudentProfile profile = new StudentProfile();
profile.Show();
this.Hide();
}
}
这样做会产生非常滞后的结果,并且看起来非常有问题
我在子表单中覆盖 selectedPage 所以在 StudentProfile 的情况下我使用:
private void StudentProfile_Load(object sender, EventArgs e)
{
selectedPage = "Profile";
}
我已经在我朋友的代码上对此进行了测试,他的导航工作没有延迟或故障。他没有在表单上做继承
【问题讨论】:
-
不完整。 selectedPage 来自哪里?但是继承一个菜单会冒着激活多个副本的风险。当您单击其他菜单项时,会触发多少次?
-
我现在添加了选定的页面。如何检查它触发的次数?我可以告诉你,当我点击菜单项的那一刻,内存会发生巨大的跳跃
-
正确的方法是使用 UserControls 并将它们加载到您的 MainForm 中。
-
我对 UserControls 做了一些研究,是否有任何特定的视频/页面可以解释如何做到这一点。我尝试使用我观看的视频和几页来做到这一点,我假设您使用一个类实际上能够将菜单添加到您的工具箱中。我似乎无法做到这一点。
-
有一个功能叫做菜单合并。 ToolStrip 可以是 UserControl(aks 页面)的一部分。请注意,您在这里重新发明了 MDI。
标签: c# winforms navigation