我应该如何在另一个表单的面板中顺利打开表单

时间:2018-10-02 11:33:49

标签: c#

为了解释所有内容,我将从实际项目中简化示例,使其更易于理解。我有一个主菜单,最左边有菜单按钮,中间是一个面板。单击任何菜单按钮,将在PanelForms中打开一个表单,并关闭以前打开的表单。参见下面的插图。

enter image description here

^例如:单击按钮Settings将在FormSettings内部打开PanelForms

执行此/最佳做法的好方法是什么?在下面的代码中,您会看到我在做什么,但是我觉得它可以进行一些优化-并且这样做无法允许我在加载时添加预加载器(一个简单的GIF或progressbar就可以了)将表格放到面板上。我以为该解决方案可以与threading和/或backgroundworkers一起使用,但是找不到适合我情况的好的解决方案-或弄清楚如何正确使用它。

现在,这就是我要做的(其他形式完全一样):

    formSettings fsOpen = null;

private void btnSettings_Click(object sender, EventArgs e)
{
    fsOpen = new formSettings();

    fsOpen.TopLevel = false;
    fsOpen.AutoScroll = true;
    fsOpen.AutoScaleMode = AutoScaleMode.Dpi;
    this.panelForms.Controls.Add(fsOpen);
    fsOpen.Dock = DockStyle.Fill;
    fsOpen.Show();
    fsOpen.BringToFront();
}

通过这种方式,我可以轻松关闭表单,并在单击fsOpen.Close();这样的另一个menuButton时将其替换为另一表单。

我不希望有一个完整的详细答案可以完全解决这个问题,但是如果有人至少可以使我朝正确的方向发展(最好是举一些例子),那就太好了。我在谷歌搜索中发现的信息使我感到非常困惑-看来有很多解决方法。

其他信息

这是由Visual Studio 2017制作的.net Windows应用程序-同时使用代码和设计器工具。所有的表单都有大量的控件要加载,其中有几个正在从XML读取大量信息并填充到datagridview中。表单现在需要1-2秒来加载,这还不错,但是在加载表单等控件时,我可以看到一些闪烁。

0 个答案:

没有答案