同时检查多个对象的bool属性

本文关键字:bool 属性 对象 检查 | 更新日期: 2023-09-27 18:06:37

我的GUI应用程序上有多个复选框,这些复选框允许对相同类型的每个对象进行自动更新。因此,如果复选框被选中,isauupdate属性将被设置为true,否则将被设置为false。我有一个按钮,需要启用/禁用所有复选框上的自动更新。如何检查所有对象的isauupdate属性是否设置为true或false

我目前的实现是使用foreach循环遍历每个对象,并检查isautouupdate是否设置为true或false,但我得到一个切换效果,如果一些复选框被选中,它将取消选中它们,反之亦然。

在cs

foreach (MxL_GUI_ChannelSettingAndStatusItem item in theGUIManager.theDevice.channelCollection)
{
    if (!item.IsAutoUpdated)
    {
        item.IsAutoUpdated = true;
    }
    else
    {
        item.IsAutoUpdated = false;
    }
}

同时检查多个对象的bool属性

如果你不想切换从属复选框,那么就不要编写切换它们的代码。相反,选中主复选框的IsChecked属性,并将该值应用于项目的所有IsAutoUpdated属性:

foreach (MxL_GUI_ChannelSettingAndStatusItem item in ...)
{
    item.IsAutoUpdated = masterCheckbox.IsChecked.Value;
}

我不确定我是否完全理解你的要求。如果你想检测是否所有项都被设置为true或false,那么使用:

var items = theGUIManager.theDevice.channelCollection;
// If you need to know if for all items IsAutoUpdated = true
bool allChecked = items.All(item => item.IsAutoUpdated);
// If you need to know if they're all false
bool noneChecked = !items.Any(item => item.IsAutoUpdated);

然后更新你的条目,例如:

foreach(var item in items) { item.IsAutoUpdated = !allChecked; }