C#多形式编码实践

C#多形式编码实践,c#,maintainability,C#,Maintainability,我的问题是,一般来说,有一个多形式的程序是允许的和可维护的。更具体地说,在C#中,让一个按钮转到另一个窗体(每个按钮都在一个单独的类中)是一种好的做法。以下是一个例子: (在本例中,我创建了一个程序员参考应用程序,在该应用程序中,我需要从一个页面到另一个页面收集来自web的信息,并将其放在一个应用程序中以供快速参考) 主要形式: using System; using System.Collections.Generic; using System.ComponentModel; using S

我的问题是,一般来说,有一个多形式的程序是允许的和可维护的。更具体地说,在C#中,让一个按钮转到另一个窗体(每个按钮都在一个单独的类中)是一种好的做法。以下是一个例子: (在本例中,我创建了一个程序员参考应用程序,在该应用程序中,我需要从一个页面到另一个页面收集来自web的信息,并将其放在一个应用程序中以供快速参考)

主要形式:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ProgramersReference
{
public partial class main : Form
{
    public main()
    {
        InitializeComponent();
    }

    //About button click
    private void btnAbout_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Author: anon \n"
            +"Version Number: 00.00.01 \n"
            ,"Information");    //Version Key quickreference: 00(high profile change).00(Medium profile change).00(low profile change)
    }

    private void btnWebsites_Click(object sender, EventArgs e)
    {
        websiteForm websiteFormObj = new websiteForm();
        websiteFormObj.Show();
    }
 }
}
第二种形式(在不同类别中):


如果这不是一个好方法,您能回答什么是更好的方法吗?选项卡控件是更好的方法吗?或者使用面板在应用程序中显示和隐藏新内容吗?

看看大型程序。蒸汽在每个动作中使用新窗口。VisualStudio在每个操作中都使用了大量新窗口。这些页面都使用不同页面的选项卡。如果你这样做的话,事情会变得一团糟

创建弹出窗口的原因是为了从用户那里获得一些输入。例如:

  • 保存文件
  • 打开文件
  • 在Visual studio中创建新类
  • 更改设置 所有这些弹出窗口都是在程序希望在不干扰主布局和程序目标的情况下进行输入时创建的。这些窗户也会很快关闭


    因此,只有当用户提供一些输入后,弹出窗口将快速消失时,才能创建弹出窗口。并将程序的主要功能放在选项卡中

    看看大型节目。蒸汽在每个动作中使用新窗口。VisualStudio在每个操作中都使用了大量新窗口。这些页面都使用不同页面的选项卡。如果你这样做的话,事情会变得一团糟

    创建弹出窗口的原因是为了从用户那里获得一些输入。例如:

  • 保存文件
  • 打开文件
  • 在Visual studio中创建新类
  • 更改设置 所有这些弹出窗口都是在程序希望在不干扰主布局和程序目标的情况下进行输入时创建的。这些窗户也会很快关闭


    因此,只有当用户提供一些输入后,弹出窗口将快速消失时,才能创建弹出窗口。并将程序的主要功能放在选项卡中

    总的来说,我同意丁满的话,但这取决于你想要实现什么。编程是一个创造性的过程,应将规则视为指导原则。如果应用程序更好地使用选项卡,请使用选项卡;如果应用程序更好地使用表单,请使用表单。如果您为客户编写此应用程序,请与他们讨论此问题。至于最佳实践,我认为这两种选择都没有问题

    希望我的闲话能有所帮助
    丹尼

    总的来说,我同意丁满所说的,但这取决于你想要达到的目标。编程是一个创造性的过程,应将规则视为指导原则。如果应用程序更好地使用选项卡,请使用选项卡;如果应用程序更好地使用表单,请使用表单。如果您为客户编写此应用程序,请与他们讨论此问题。至于最佳实践,我认为这两种选择都没有问题

    希望我的闲话能有所帮助
    丹尼

    我认为这是个人对风格布局的看法。它实际上取决于您试图创建的程序。您可以尝试的是像VisualStudio:.@TimonPost这样的可固定窗口,但就未来的可维护性而言,每个按钮都在不同的类中,并且同一个按钮映射到另一个表单,这是否是一种好的做法?谢谢你的评论。我很久以前就试着使用带有用户控件的面板。请注意,您应该注意事件处理程序。否则将耗尽内存。对于我来说,标签式文档要干净得多,但对于干净的代码,请尝试为每个标签创建不同的类。请在阅读之前阅读有关MVP模式的内容。从发布的代码中,您正在使用winforms。@AdrianStanculescu感谢您的回复。我认为这是关于样式布局的个人意见。它实际上取决于您试图创建的程序。您可以尝试的是像VisualStudio:.@TimonPost这样的可固定窗口,但就未来的可维护性而言,每个按钮都在不同的类中,并且同一个按钮映射到另一个表单,这是否是一种好的做法?谢谢你的评论。我很久以前就试着使用带有用户控件的面板。请注意,您应该注意事件处理程序。否则将耗尽内存。对于我来说,标签式文档要干净得多,但对于干净的代码,请尝试为每个标签创建不同的类。请在阅读之前阅读有关MVP模式的内容。从发布的代码中可以看出,您正在使用winforms。@AdrianStanculescu感谢您的回复。我了解多一点,谢谢timon。我了解多一点,谢谢timon。
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace ProgramersReference
    {
      public partial class websiteForm : Form
       {
        public websiteForm()
        {
            InitializeComponent();
        }
       }
    }