1

我一直在使用文本来确定按钮状态,想知道它是否被普遍接受?

我有一个带有项目列表和“完成”按钮的数据网格视图。当用户单击完成按钮时,单元格以绿色突出显示以标记它已完成。

然后我将按钮文本更改为“撤消”。因此,每当用户滚动“绿色”单元格时,按钮文本都会更改为撤消。

我使用该文本来确定单击按钮时要执行的操作。

这个可以吗?或者我应该使用某种状态监视器?

4

2 回答 2

0

我认为这是勉强可以接受的,但仍然很糟糕。

将状态存储在变量中并不费力,而且会使代码更易于维护(不要混合处理和 GUI)。

当您以某种方式更改按钮的文本时,您也必须调整检查。

此外,这使得更新 GUI(多线程等)变得更加容易。

于 2013-04-30T11:57:38.947 回答
0

在许多情况下,我喜欢的模式是具有指示控件逻辑状态的私有字段,以及导致控件本身的属性以合理及时的方式更新的属性。如果与控件本身的属性有一个交互点,并且假设字段始终表示有效状态,那么非 UI 线程代码可以更改控件的状态,而无需与 UI 线程同步;它只需要确保在下次方便时有一个未决的请求来更新控件。

尽管您的特定示例不涉及任何线程问题,因此并没有真正受益于通过将控制状态与逻辑状态分开所提供的线程易用性,但对于需要多线程支持的情况与不支持的情况使用相同的模式这将减少一个人必须处理的不同模式的数量。此外,如果您使用自己的字段来表示控件可以具有的不同状态,则可以确保它们永远不会表示模棱两可或无效的状态。例如,如果一段代码将按钮设置为“UNDO”而不是“Undo”,其他一些代码可能会决定“它不是‘Undo’,所以它应该保存”,有些代码可能会决定“它不是”吨Save,所以它应该撤消“`,有些可能什么都不做,有些可能会发出尖叫声。此外,可能很难添加任何其他状态或指示。例如,可能想要在“撤消”按钮中添加一个指示将被撤消。如果使用字段来跟踪状态,则可以添加此类功能而不会干扰区分“保存”和“撤消”的字段;或者添加另一个字段以跟踪应指示的特定操作显示撤消按钮,或者让“更新按钮文本”例程使用现有字段来确定。

于 2013-05-09T16:12:42.487 回答