【问题标题】:Adding controls conditionally有条件地添加控件
【发布时间】:2012-01-19 02:59:24
【问题描述】:

我目前正在研究这个用 C# 和 .NET 3.5 编写的大型项目(一个用于控制硬件的 GUI)。现在硬件的下一个版本即将到来,其中一些更改使得我们之前拥有的一些控件不再需要,并且还需要添加一些新控件。由于变化很大,因此需要将近一个月的时间来检查每个控件并设置条件以使其可见或不可见。

我想知道除了手动调节整个项目之外,是否还有其他方法可以轻松解决此问题。提前致谢。

【问题讨论】:

  • 您能否举例说明在确定控件是否应该可见时考虑的条件类型?
  • 到目前为止,对于我之前使用枚举所做的项目,就像我在启动时设置枚举变量并基于它加载控件一样。谢谢。
  • 因此,如果您使用enum 以某种方式定义控件,它会起作用吗?底线是您需要以某种方式告诉您的程序是否应该呈现特定控件。无论是通过enum、标签值还是其他方式;您将需要某种方法来确定特定控件应该是可见的(甚至是创建的)。除非您切换到 WPF,否则我想不出用框架或任何现有库来执行此操作的方法。
  • 谢谢巴布科克。我现在有一个使用标签的想法。我会尝试使用标签。感谢您的建议。

标签: c# winforms controls


【解决方案1】:

如果您可以根据控件的某些属性(例如其名称或标签)来决定是可见还是不可见,您可以编写一个可以遍历窗口控件的方法,并以编程方式隐藏您想要隐藏的控件.对于像标签这样的控件,您可以键入标签的文本。

如果写得正确,可以将方法编写成可重入的,这样对于包含其他控件的控件,该方法将为每个当前控件子级调用自身。

这方面最困难的部分是确定如何以编程方式做出开启或关闭决定。

如果这不可行,另一种解决方案可能是编写一个小型应用程序,该应用程序可以读取代码并列出您要检查的控件,让您可以根据您对应用程序的了解做出决定。然后,应用程序可以进行必要的更改以在代码中设置控件的属性,以便在编译代码时隐藏它。

【讨论】:

    【解决方案2】:

    您通常必须为这类事情进行设计,而听上去,它并不是为此而设计的。

    但很多时候,这种变化看起来相当大,但通常没什么大不了的。

    【讨论】:

    • 没错,通常我们过去有较小的项目,手动更改并不难。但这有点大,实际上我不是设计架构的人,我后来在那个人离开后试图了解如何在没有更多工时的情况下进行更改。谢谢。
    • 我发现,如果可以通过搜索找到东西,并且您必须逐个更改....即使有数百个,通常实际执行时间也是一两天,如果说。有时,如果你真的很聪明,你可以自动替换。
    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    相关资源
    最近更新 更多