【问题标题】:Reducing a few forms into 1 form. Good or bad practice?将几种形式减少为一种形式。好的做法还是坏的做法?
【发布时间】:2014-02-11 07:20:29
【问题描述】:

我有多个表单,想知道将面板添加到表单中是否是一种好习惯,将其他一些表单复制到主表单中并显示。例如,我可以有 Form1、Form2、Form3 和 Form4。然后我会删除 Form2 和 Form3 - 事先将元素复制到 Form1 中的 2 个新面板中,然后只需使用位置、可见性和大小在不同的“视图”之间切换。

我在下面使用相同的方面创建了一个真实的示例:

private void Form1_Load(object sender, EventArgs e)
{
    this.Width = 385;
    this.Height = 243;
}

private void ButtonSearch_Click(object sender, EventArgs e)
{
    this.Width = 541;
    this.Height = 226;

    panelSearch.Visible = false;
    panelFileInfo.Visible = true;
    panelFileInfo.Location = new System.Drawing.Point(0, 2);
    label4.Text = textBox1.Text;
}

private void labelSearchAgain_Click(object sender, EventArgs e)
{
    this.Width = 385;
    this.Height = 243;

    textBox1.Text = string.Empty;
    checkBox1.Checked = false;
    checkBox2.Checked = false;
    panelSearch.Visible = true;
}

【问题讨论】:

  • 这听起来像是你在codereview上放的东西,但是没有任何代码,这也使它在这里无效。它不属于 UX,因为它显然是关于编码最佳实践的问题......我不知所措。
  • 我从未听说过。不是无效的,怎么办?我只是简单地创建了表单和两个面板,然后制作了 Outlook 的屏幕截图。在 Form1.cs 中,代码是默认的......我没有添加任何代码,因为我只是使用了这些工具。那么,当你创建一个新表单时,我为什么要上传一些已经默认的代码呢?这只是一个简单的例子来展示面板的使用。
  • 这就是 StackOverflow 的重点吗?人们在他们的代码出现问题时来到这里,通常没有代码的问题不是 SO 的领域。这可能是一个有效的问题,但如果是这样,它就相当接近了。
  • 我理解你的意思,我认为不需要代码来代表我的示例,因为我想更多地展示设计方面。所以我会很快用我在项目中使用的一些代码来更新我的问题。

标签: c# winforms visual-studio .net-3.5


【解决方案1】:

好的,我们有很多 遗留代码在工作,有人做了你想做的事。他们将十几种不同的形式组合成一个巨大的形式,随处可见动态显示/隐藏、移动和操纵的面板。

这已成为维护的噩梦!

根据功能将表单分开。给他们好的描述性名称。如果你刚刚开始一个项目,你可能会考虑把精力放在学习 WPF 上,因为它是 WinForms 的自然继承者。

这当然是基于我的观点,但也是基于 5 年维护一些意大利面条代码的经验,我建议你尽量避免。

【讨论】:

  • 我也建议不要这样做。在 Winforms 中它应该很快变得丑陋。 WPF 与像 Caliburn..Micro 这样的优秀工具包相结合,可以解决这个问题。#
【解决方案2】:

我倾向于组件化创建聚合 2 或 3 个控件的自定义组件/用户控件。然后我研究这些新组件,以使它们具有设计时支持等高度可重用(至少在同一个项目中)......

我建议您尝试在控件中转换表单,然后将自定义控件拖放到主表单中

【讨论】:

  • 这太棒了,但我不认为我可以使用 UserControls...工作......但在未来的项目中会记住这一点!你让我大开眼界!
  • UserControls 和 Forms 一样支持多语言。这是非常简单的 GUI 任务。
  • 那太好了,我会这么做的。
猜你喜欢
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 2016-11-10
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多