2

我正在考虑制作一些功能受限的应用程序版本,并且我想省略更简单版本中不需要的代码。作为 WinForms 应用程序,UI 必须针对每个版本进行更改 - 不显示受限控件。

我尝试使用条件编译语句来注释自动生成的控件和布局代码的一部分,但我发现一旦我通过 WinForms 设计器触摸任何东西,VS 就会抛出我所有的代码。

我希望能够有条件地编译一些事件处理程序和 UI 控件。我可以在设计器文件之外编写条件 UI 代码,但是我将无法使用 VS 设计器来编辑我的应用程序。是否有任何建议来解决这种情况 - 即有条件地编译 UI 控件并仍然显示它们在设计师?

谢谢!

4

1 回答 1

1

不知道您的 UI 表单看起来如何,也许您可​​以创建一个所有版本共享功能的基本表单。然后使用特定功能的表单对其进行子类化。这样,您可以有条件地编译子表单,而不是尝试打开/关闭一个表单中的控件。但是,子表单通常会向下扩展表单,因此在这种情况下,整个表单的编织控件可能不起作用。

此外,如果您使用演示模式(如果您还没有这样做),例如 MVC 或 MVP,您可以最小化表单中的逻辑并将其推送到演示者/控制器,甚至可以根据版本配置的业务类你正在编译。这些类可以基于某些配置被注入 (DI) 到应用程序中。

另一种选择是不编译表单控件,而是根据您正在运行的版本隐藏它们,但编译业务类。这样,重要的“智力”代码就不会出现在应用程序中,您也不会与 winform 设计器发生争执。

于 2010-07-07T03:30:59.960 回答