我認爲您的示例中存在拼寫錯誤。複選框8不應該是0060,而應該是0080.所以123表示位:1,2,6,9(不是10)。
像這樣:
Checkbox 01 = 00 01
Checkbox 02 = 00 02
Checkbox 03 = 00 04
Checkbox 04 = 00 08
Checkbox 05 = 00 10
Checkbox 06 = 00 20
Checkbox 07 = 00 40
Checkbox 08 = 00 80
Checkbox 09 = 01 00
Checkbox 10 = 02 00
要檢查哪些複選框被設置,你可以使用這樣的代碼:
// var intMask = Convert.ToInt32("0123", 16); // use this line if your input is string
var intMask = 0x0123";
var bitArray = new BitArray(new[] { intMask });
for (var i = 0; i < 16; i++)
{
var isCheckBoxSet = bitArray.Get(i);
if (isCheckBoxSet)
Console.WriteLine("Checkbox {0} is set", i + 1);
}
輸出:
Checkbox 1 is set
Checkbox 2 is set
Checkbox 6 is set
Checkbox 9 is set
所以你用的複選框的代碼將如此簡單:
var checkboxes = new List<CheckBox>();
var intMask = 0x0123;
var bitArray = new BitArray(new[] { intMask });
for (var i = 0; i < 16; i++)
checkboxes.Add(new CheckBox { Checked = bitArray.Get(i) });
對於'BitArray' +1。我一定是太舒服了。我寧願自己使用'BitArray',這取決於還有誰可能維護代碼。 – 2011-06-05 03:59:08