【问题标题】:Windows Forms is getting too largeWindows 窗体变得太大
【发布时间】:2014-04-03 15:32:45
【问题描述】:

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

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

我还尝试制作多个窗体,隐藏和显示它们以将其拆分。 但是当我隐藏和显示一个 wndow 时,很容易看到 GUI 淡入淡出,看起来很丑。

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

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

【问题讨论】:

  • 看来您正在寻找UserControls。然而,普遍的共识是,不建议将 winforms 用于任何新项目,仅用于维护遗留应用程序。您应该认真考虑研究 WPF。
  • 正确的设计是首要的。将 Visual Studio 视为一个程序示例,该程序具有极其丰富的用户界面,但仍可以将其全部压缩在一个可用的单个窗口中。请考虑聘请帮助,优秀的 UI 设计是一种职业。
  • 一种常见的技术是使用标签文件夹。 Hans 的示例,Visual Studio 正在展示几乎所有东西都是以这种方式展示的。但不要指望仅凭这种技术就足够了。你将不得不重新思考你已经拥有的所有运作方式,并对根本性的改变持开放态度!

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


【解决方案1】:

您可以创建几个 UserControls,在它们上组织和分离您的逻辑。然后您可以使用 String Array 来存储您的控件名称并遍历项目以显示适当的视图。表单可能有 Panel 作为容器,Dock 样式定义为 Fill。简化后的代码如下所示:

   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;
        }
     }

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

【讨论】:

    猜你喜欢
    • 2022-07-11
    • 2011-04-12
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多