Windows窗体变得太大了

时间:2014-04-03 15:32:46

标签: c# winforms user-interface windows-forms-designer

我制作了一个包含许多页面的程序......在我的设计中,按钮最终会堆积起来,因此越多越难以工作。

这个问题是这个topic的克隆。 但是,由于他们谈论的是xaml和wpf,我没有真正得到答案。

我还尝试制作多个窗体,隐藏并显示它们以将其拆分。 但是当我隐藏并显示一个窗口时,很容易看到GUI逐渐消失,看起来很难看。

我想要一个即时隐藏/显示功能,所以看起来它只是一个带有1个窗口的程序,现在正在切换。

那么,使大型windowsforms程序更易于管理的技术是什么?

1 个答案:

答案 0 :(得分:0)

您可以创建一些 UserControls ,组织并分离您的逻辑。然后,您可以使用字符串数组来存储您的控件名称,并通过项目迭代以显示适当的视图。表单可以将 Panel 作为容器,将 Dock 样式定义为填充。简化的代码如下所示:

   public class MyContainer:Control
   {
    public MyContainer(string szControlName, UserControl nControl)
    {
        UserControlName = szControlName; MyControl = nControl;
    }
       public string UserControlName { get; set; }
       public UserControl MyControl { get; set; }
   }

主要形式:

    public List<MyContainer> MyNavigationArray;
    public void InitArray()
    {
        MyNavigationArray = new List<MyContainer>(MyFormPageCount);
        for (int i = 0; i < MyFormPageCount; i++)
        {

            MyNavigationArray.Add(new MyContainer(TheNameOfUserControl, new PredefinedUserControl()));
        }
    }
    private void NextButton_click(object sender, EventArgs e)
    {
        MyContainer mYcn = this.panel1.Controls[0] as  MyContainer;
        int nCurPos = MyNavigationArray.IndexOf(mYcn);
        if (nCurPos < MyNavigationArray.Count)
        {
            panel1.Controls.Clear();
            MyContainer c = MyNavigationArray[nCurPos + 1];
            panel1.Controls.Add(c);
            c.Dock = DockStyle.Fill;
        }
     }

存储在用户控件中的所有信息都将在您的数组中,以后可以使用。 希望这有帮助。