正直に言うと、これは宿題で、どうしてもやり遂げることができません。タスクは、1 バイトを使用して 8 つの異なるチェックボックスを処理することです。チェックボックスを含むフォームのコンストラクターは、入力としてバイトを受け取り、入力に基づいてチェックボックスを「チェック済み」に設定します。フラグバイトはどこかに保存され、その後、1 つのチェックボックスのステータスが変更されるたびに (チェックされたものからチェックされていないものに、チェックされていないものからチェックされたものに)、それに応じてフラグバイトを変更する必要があります。これまでのところ、最初の部分しかできませんでした:
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;
}
他のビットについては、本当に助けが必要です。