Я буду честен, это домашнее задание, которое я просто не могу сделать. Задача состоит в том, чтобы обработать 8 разных флажков, используя один байт. Конструктор формы, которая содержит флажки, принимает байт в качестве входных данных и устанавливает флажки в положение «отмечено» на основе ввода. Затем байт флага где-то сохраняется, и после этого каждый раз, когда один флажок меняет свой статус (с отмеченного на непроверенный и с непроверенного на отмеченный), я должен соответствующим образом изменить байт флага. Пока смог сделать только первую часть:
public Form1(byte flags)
{
InitializeComponent();
flags2 = flags;
if ((flags & 0x01) >> 0 != 0) checkBox1.Checked = true;
if ((flags & 0x02) >> 1 != 0) checkBox2.Checked = true;
if ((flags & 0x04) >> 2 != 0) checkBox3.Checked = true;
if ((flags & 0x08) >> 3 != 0) checkBox4.Checked = true;
if ((flags & 0x10) >> 4 != 0) checkBox4.Checked = true;
if ((flags & 0x20) >> 5 != 0) checkBox6.Checked = true;
if ((flags & 0x40) >> 6 != 0) checkBox7.Checked = true;
if ((flags & 0x80) >> 7 != 0) checkBox8.Checked = true;
}
Но я действительно не знаю, как сделать не только 1 бит. Я думал об использовании дополнений, но тогда остальные меняют биты влево. Я могу использовать этот трюк только в самом важном месте, где отдых не имеет последствий.
private void checkBox8_CheckedChanged(object sender, EventArgs e)
{
flags2 += 0x80;
}
Для других битов я действительно мог бы использовать некоторую помощь.