投稿者 魔界の仮面弁士  (社会人) 投稿日時 2022/8/10 14:44:24
> 列挙順を保持するためのコレクションを設けるべきです。
> private List<CheckBox> prefectures = new List<CheckBox>();

このサンプルは、チェックボックスが On/Off されるたびに、
prefectures の内容を書き換えるためのものでしたが……少し訂正しておきます。

先のサンプルだと、ロード直後の prefectures 変数は 0 件で始まりますので、
デザイン時にはすべての CheckBox を Checked = false にしておく必要がありました。
(最初からチェックされた状態であった場合、チェックしなおさないと txttorikomi に表示されなかった)


もし、デザイン段階で Checked = true 状態のチェックボックスを含める必要が
ある場合には、たとえばこのように変更してみてください。
※初期状態でチェック済みだった項目の並び順は、「Controls からの列挙順」に依存します。

private List<CheckBox> prefectures = new List<CheckBox>();
public Form1()
{
    InitializeComponent();
    groupBox1.Controls.OfType<CheckBox>().ToList().ForEach(c =>
    {
        if (c.Checked) { prefectures.Add(c); }
        c.CheckedChanged += delegate
        {
            prefectures.Remove(c);
            if (c.Checked) { prefectures.Add(c); }
        };
    });
}
private void button1_Click(object sender, EventArgs e)
{
    txttorikomi.Text = string.Join(" ", prefectures.Select(c => c.Text));
}