在页面上有四个复选框是固定的(不是从数据库中读取出来的),他们的名字不一样,我想取得他们的值
,判断是否选中,如果选中了值就为1没有选中为0,我是这样写的,但是我感觉好麻烦啊,不想用这种方法
你看下下面的代码:
  AppPlayerSettingDefaultItem[] tempPlyerSettingDefaultItem = new AppPlayerSettingDefaultItem[4];                    if (chbDiceGames.Checked)
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 1;
                        tempObj.SettingValue = "1";
                        tempPlyerSettingDefaultItem[0] = tempObj;
                    }
                    else 
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 1;
                        tempObj.SettingValue = "0";
                        tempPlyerSettingDefaultItem[0] = tempObj;
                    }                    if (chbMahjong.Checked)
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 2;
                        tempObj.SettingValue = "1";
                        tempPlyerSettingDefaultItem[1] = tempObj;
                    }
                    else
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 2;
                        tempObj.SettingValue = "0";
                        tempPlyerSettingDefaultItem[1] = tempObj;
                    }                    if (chbBaccarat.Checked)
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 3;
                        tempObj.SettingValue = "1";
                        tempPlyerSettingDefaultItem[2] = tempObj;
                    }
                    else
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 3;
                        tempObj.SettingValue = "0";
                        tempPlyerSettingDefaultItem[2] = tempObj;
                    }                    if (chbSicBo.Checked)
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 4;
                        tempObj.SettingValue = "1";
                        tempPlyerSettingDefaultItem[3] = tempObj;
                    }
                    else
                    {
                        AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
                        tempObj.SettingCode = 4;
                        tempObj.SettingValue = "0";
                        tempPlyerSettingDefaultItem[3] = tempObj;
                    }

解决方案 »

  1.   

    也没什么更好的写法了吧。
    下面这个无非是看上去简洁点。AppPlayerSettingDefaultItem加个构造函数,或做成工厂模式。
    tempPlyerSettingDefaultItem[0]  = (chbDiceGames.Checked==true)?new AppPlayerSettingDefaultItem(1,1):new AppPlayerSettingDefaultItem(1,0);其他一样。
      

  2.   

    AppPlayerSettingDefaultItem[] tempPlyerSettingDefaultItem = new AppPlayerSettingDefaultItem[4];
    CheckBox[] chbs = new CheckBox[]{chbDiceGames, chbMahjong, chbBaccarat, chbSicBo};
    for (int i = 0; i < chbs.Length; i++)
    {
      AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
      tempObj.SettingCode = i + 1;
      tempObj.SettingValue = chbs[i].Checked ? "1" : "0";
      tempPlyerSettingDefaultItem[i] = tempObj;
    }
      

  3.   

    CheckBox[] chbs = new CheckBox[]{chbDiceGames, chbMahjong, chbBaccarat, chbSicBo};
    AppPlayerSettingDefaultItem[] tempPlyerSettingDefaultItem = new AppPlayerSettingDefaultItem[chbs.Length]; // <-- 用 chbs.Length 而不是 4,适应性更好性。
    for (int i = 0; i < chbs.Length; i++)
    {
      AppPlayerSettingDefaultItem tempObj = new AppPlayerSettingDefaultItem();
      tempObj.SettingCode = i + 1;
      tempObj.SettingValue = chbs[i].Checked ? "1" : "0";
      tempPlyerSettingDefaultItem[i] = tempObj;
    }
      

  4.   

    for (int i = 0; i < tempAppMyAccountItem.MyPlayerSettingItem.Length; i++)
                                {
                                    AppPlayerSettingDefaultItem tempObj = tempAppMyAccountItem.MyPlayerSettingItem[i];
                                                                    if (tempObj.SettingCode == 1)
                                    {
                                        if (tempObj.SettingValue == "1")
                                        {
                                            chbDiceGames.Checked = true;
                                        }
                                    }
                                    else if (tempObj.SettingCode == 2)
                                    {
                                        if (tempObj.SettingValue == "1")
                                        {
                                            chbMahjong.Checked = true;
                                        }
                                    }
                                    else if (tempObj.SettingCode == 3)
                                    {
                                        if (tempObj.SettingValue == "1")
                                        {
                                            chbBaccarat.Checked = true;
                                        }
                                    }
                                    else if (tempObj.SettingCode == 4)
                                    {
                                        if (tempObj.SettingValue == "1")
                                        {
                                            chbSicBo.Checked = true;
                                        }
                                    }
                                }
    这个代码要怎么改好呢
      

  5.   

    CheckBox[] chbs = new CheckBox[]{chbDiceGames, chbMahjong, chbBaccarat, chbSicBo};
    for (int i = 0; i < tempAppMyAccountItem.MyPlayerSettingItem.Length; i++)
    {
      AppPlayerSettingDefaultItem tempObj = tempAppMyAccountItem.MyPlayerSettingItem[i];
      chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");
    }
      

  6.   

    还可以简化一下:
    CheckBox[] chbs = new CheckBox[]{chbDiceGames, chbMahjong, chbBaccarat, chbSicBo};
    foreach (AppPlayerSettingDefaultItem tempObj in tempAppMyAccountItem.MyPlayerSettingItem)
    {
      chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");
    }
      

  7.   


    可以,哇,你好厉害哦!
    你看我这样写可以吗?
    for (int i = 0; i < tempAppMyAccountItem.MyPlayerSettingItem.Length; i++)
                                {
                                    AppPlayerSettingDefaultItem tempObj = tempAppMyAccountItem.MyPlayerSettingItem[i];
                                    if (tempObj.SettingCode == i + 1)
                                    {
                                        if (tempObj.SettingValue == "1")
                                        {
                                            chbs[i].Checked = true;
                                        }
                                       
                                    }
    }
      

  8.   


    chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");
    这句有点不懂,可以解释一下吗?
      

  9.   

    也可以用foreach遍历所有控件,判断如果是复选框并且选中  为其赋值,反之...
      

  10.   


    这样写是不行的,因为for的 i 和 chbs[i] 中的 i 不是一回事。
      

  11.   

    chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");tempObj.SettingCode 就是你先前保存的 1, 2, 3, 4 对应于 chbDiceGames, chbMahjong, chbBaccarat, chbSicBo。
    然后 tempObj.SettingCode - 1 就可以从数组 chbs 中取出相应的 CheckBox,再用 (tempObj.SettingValue == "1") 对其进行赋值。