循环浏览选项卡项复选框

本文关键字:复选框 选项 浏览 循环 | 更新日期: 2023-09-27 18:29:14

我有一组50个CheckBoxes,它们放在TabItem内。单击按钮时,我需要循环浏览CheckBoxes,根据CheckBox.Ischeckedtrue还是false,它的相关变量将设置为0或1。

以下是我开始尝试的一些代码;

private void ApplyPrivilegeUpdateClick(object sender, RoutedEventArgs e)
{
    var newPrivilegeModel = new EmployeePrivilegeModel();
    int i = 0;
    foreach (CheckBox c in companiesTabItem)
    {
        if (c.IsChecked == true)
        {
            newPrivilegeModel.Priv1 = 1;
        }
        i++;
    }
}

newPrivlegeModel.Priv1-这会上升到Priv50,所以Priv1, Priv2, Priv3等等。我真正不想做的是为所有50个CheckBoxes做一个If循环,并设置它们的相关Priv

我有两个问题,如何循环通过TabItem中的所有50个CheckBoxes?我如何对newPrivlegeModel.Priv1进行编码,以便它们都自动更新?例如,newPrivlegeModel.Priv + i不起作用,那么我该如何绕过它呢?

循环浏览选项卡项复选框

为什么不使用Dictionary而不是ofEmployeePrivilegeModel´?

我有一组50个复选框,放在一个TabItem中。单击按钮时,我需要循环检查复选框,并根据CheckBox.Ischecked是true还是false,它的相关变量将设置为0或1。

以下是我开始尝试的一些代码;

private void ApplyPrivilegeUpdateClick(object sender, RoutedEventArgs e)
{
    var newPrivilegeModel = new Dictionary<string,int>();
    int i = 0;
    foreach (CheckBox c in companiesTabItem)
    {
        if (c.IsChecked == true)
        {
            if(newPrivilegeModel.ContainstKey("Priv"+(i + 1).ToString())){
              newPrivilegeModel["Priv"+(i + 1).ToString()]=1;
            }
            else
            {
              newPrivilegeModel.Add("Priv"+(i + 1).ToString(),1);
            }
        }
        i++;
    }
}

向EmployeePrivilegeModel类添加一个数组或列表以保存所有值。

var newPrivilegeModel = new EmployeePrivilegeModel();
newPrivilegeModel.PrivList = new List<bool>();
foreach (CheckBox c in companiesTabItem)
{
    if (c.IsChecked == true)
    {
        newPrivilegeModel.PrivList.Add(1);
    }
    else
    {
        newPrivilegeModel.PrivList.Add(0);
    }
}