在页面上有四个复选框是固定的(不是从数据库中读取出来的),他们的名字不一样,我想取得他们的值
,判断是否选中,如果选中了值就为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没有选中为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;
}
下面这个无非是看上去简洁点。AppPlayerSettingDefaultItem加个构造函数,或做成工厂模式。
tempPlyerSettingDefaultItem[0] = (chbDiceGames.Checked==true)?new AppPlayerSettingDefaultItem(1,1):new AppPlayerSettingDefaultItem(1,0);其他一样。
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;
}
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;
}
{
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;
}
}
}
这个代码要怎么改好呢
for (int i = 0; i < tempAppMyAccountItem.MyPlayerSettingItem.Length; i++)
{
AppPlayerSettingDefaultItem tempObj = tempAppMyAccountItem.MyPlayerSettingItem[i];
chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");
}
CheckBox[] chbs = new CheckBox[]{chbDiceGames, chbMahjong, chbBaccarat, chbSicBo};
foreach (AppPlayerSettingDefaultItem tempObj in tempAppMyAccountItem.MyPlayerSettingItem)
{
chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");
}
可以,哇,你好厉害哦!
你看我这样写可以吗?
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;
}
}
}
chbs[tempObj.SettingCode - 1].Checked = (tempObj.SettingValue == "1");
这句有点不懂,可以解释一下吗?
这样写是不行的,因为for的 i 和 chbs[i] 中的 i 不是一回事。
然后 tempObj.SettingCode - 1 就可以从数组 chbs 中取出相应的 CheckBox,再用 (tempObj.SettingValue == "1") 对其进行赋值。