gpt4 book ai didi

c# - 如何在各种不同条件下启用/禁用多个控件中的某些控件?

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

如何在各种不同条件下启用/禁用多个控件中的某些控件?

比方说,有一个有几行的 GUI,每一行代表一个人。还有一些按钮,代表一些 Action ,比如,“站、坐、走、跳、吃、看电视、醒来、 sleep ”,还有一些条件,比如如果有人坐着他可以吃饭和看电视(即启用那些按钮)但不能跳(禁用它),如果有人站着他就睡不着,等等。

此外,状态的改变不仅仅基于按钮点击。比如,他可能会在一段时间后醒来,或者说,在他吃完饭后。

看起来最幼稚的方法是编写 n 状态 X m 按钮次数的 .Enabled = true/false; 代码,并检查每个用户或非用户触发的状态更改。有没有更好/更快/更不容易出错的方法来做到这一点?

还有,这些东西叫什么?

最佳答案

这取决于您使用的是 WPF 还是 WinForms。

WPF 允许您对 Enabled 属性进行数据绑定(bind),因此您可以声明式说明何时应该启用它,只要触发正确的属性更改事件,它就会发生。

对于 WinForms,是的,设置 .Enabled 是可行的方法。最简单的事情是编写一种方法,例如UpdateEnabled() 根据您的规则更新所有控件的 Enabled(如果跳转,则应禁用 btnEat),然后在状态更改时调用该方法。

由于并非所有状态更改都响应 GUI 事件,您可能需要一个模型对象来维护状态并在状态更改时触发事件。然后,每当该事件触发时,您都可以调用 UpdateEnabled() 方法根据新状态刷新 GUI。

如果您的需求很简单,这就是您需要做的全部。如果您的应用程序变得更加复杂,您需要研究像模型- View -演示者这样的模式——演示者将是一个类,它根据当前状态知道哪些操作是启用的,哪些是禁用的。

关于c# - 如何在各种不同条件下启用/禁用多个控件中的某些控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/740620/

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