代码之家  ›  专栏  ›  技术社区  ›  filip-fku

有条件地编译UI组件和逻辑

  •  2
  • filip-fku  · 技术社区  · 15 年前

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

    我希望能够有条件地编译一些事件处理程序;UI控件。我可以在设计器文件外编写有条件的UI代码,但这样我就不能使用VS设计器编辑我的应用程序了。。是否有任何建议来纠正这种情况-即有条件地编译UI控件&还把它们放在设计师的橱窗里吗?

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  1
  •   aqwert    15 年前

    如果不知道UI表单的外观,那么您可以创建一个所有版本都共享功能的基本表单。然后用特定功能的表单将其子类化。通过这种方式,您可以有条件地编译子窗体,而不是试图在一个窗体中打开/关闭控件。但是,子窗体通常会向下扩展窗体,因此在这种情况下,在整个窗体中编织控件可能不起作用。

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

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