gpt4 book ai didi

c# - 有条件地编译 UI 组件和逻辑

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:40 25 4
gpt4 key购买 nike

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

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

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

谢谢!

最佳答案

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

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

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

关于c# - 有条件地编译 UI 组件和逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com