【问题标题】:Dealing with control flexibility处理控制灵活性
【发布时间】:2012-07-06 12:25:41
【问题描述】:

我有更多关于“良好编程实践”的问题。 我刚刚开始了一个非常大的项目。我正在使用 WebGui(长话短说……它是 Web 中的 WinForms)——但这并不重要。

我正在使用数百万个控件创建数百万个表单,例如 TextBoxNumericUpDownDateTimePicker 等。这可能会发生,我将不得不更改 DateTimePicker 的行为或外观。在每个控件中都无法更改它。我希望我的项目灵活,所以我有一个想法..

我为每种类型(字符串、数字、日期、字节)做单独的自定义控件。例如,我将在其中放置 TextBox。在每个表单上,我不会放置 TextBox,而是 MyTextBox。实际上,那个 MyTextBox 将只是 TextBox,但是当我在那里更改某些内容时,每个控件都会更改。

这是一种好的、流行的编程实践吗?

【问题讨论】:

  • 当您使用真实的数字时,建议答案可能会更容易。我怀疑你会用数百万个控件创建数百万个表单。是否有描述应用程序功能的文档?预计多久会进行一次此类更改?
  • 好吧,我不能给你看这份文件。我肯定会说超过 200 个表格,所以对我来说是“百万”。我不知道多久.. 当我的客户改变主意,并且会说 datetimepicker sux.. 是的,他可能会为此付出代价,但我不想浪费整个星期做那种工作。
  • 不需要出示文件,有一份很重要。在开发过程中征求客户的意见很重要,以尽可能避免这些情况。也许有可能用 CSS 实现那些可能的变化?这取决于更改的类型。
  • 但没有 CSS。我必须在 WinForms 中处理它

标签: c# winforms visual-web-gui


【解决方案1】:

在 WPF 的情况下,这可以很容易地使用样式和模板来实现。 在 Winforms 中这是不可能的,因此我想说您从控件派生并在 UI 上使用您自己的自定义控件的方法是一种很好的实用方法,有助于集中管理更改。

如果控件是在程序中手动创建的,或者您可以使用工厂类并让工厂创建控制器对象,而不仅仅是更新。 但是,当通过拖放控件创建 UI 时,这可能是不可能的,因为开发人员无法控制控件的创建。

无论您选择哪种方法,基本目标都应该是集中控件的创建逻辑。

【讨论】:

    【解决方案2】:

    是的,如果标准控件不能满足您的要求,这对于 GUI 开发来说是完全正常的编程实践。

    大多数开发人员都获得了第 3 方控制套件以获得额外的灵活性。购买的好处远远超过了自己建立核心控制的好处。

    我曾在一个有 companyTextBox、companyDatePicker 的地方工作过,它工作正常。一些控件在 .Net 版本上进行了改进,因此这些基类控件需要一些手术。任何折旧的控件都保留为依赖于框架版本。

    对于特殊的事情,我在CodeProject、CodePlex、Code.Google.com 等上对良好的自定义控件进行了大量研究,并将它们实施到我正在从事的项目中。 否则,请使用我正在工作的公司使用的库存标准控件或第 3 方控件套件。

    我的建议是获取第 3 方控件套件,并在第 3 方控件的基础上制作大量可重复使用的用户控件。这样,您可以通过将用户控件拖放到表单上来构建 200 个表单中的大部分。使用 Create、Retrieve、Update 和 Delete 方法使每个 User-Control 实现一个接口,以使表单能够与您的用户控件一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多