Здравствуйте, Александр!
К сожалению, времени писать код у меня нет, поэтому ограничусь советами.
- Применительно к Вашей программе визуальная работа с чекбоксами вообще не отличается от радиокнопок. У них есть точно такой же набор свойств, и Вы можете просто в тексте заменить RadioButton на CheckBox.
По логической части Вам придется хранить список правильных индексов и сравнивать значение каждого чекбокса с тем, которое должно быть. В xml нужно 2 разных тега для вопросов, чтобы различать единичный и множественный выбор. Для множественного выбора можно хранить булевый массив с правильным ответом и сравнивать его элементы с соответствующими чекбоксами.
- Вам будет гораздо проще работать с вопросами, если создать для них специальные классы. Тогда работа с xml ограчится одним методом, который должен прочитать документ и создать список классов.
- Вместо массивов проще использовать класс List<>. Он сам изменяет свои размеры по мере надобности - избавитесь от множества проверок размера в коде.
- Чекбоксы и радиокнопки имеют свойство текст. Создавать лейблы для текста не нужно. И явно указывать все мыслимые параметры текста обычно тоже не нужно.
- Пользуйтесь контейнером TableLayoutPanel! Он сам расположит чекбоксы как надо. Вычисление координат тяжело и ненадежно: если в вопросах и вариантах ответов будет слишком много текста, текст станет налазить на следующий или обрезаться. Также, жестко ограничено количество ответов. Лучше для них завести специальную таблицу и для каждого вопроса очищать ее и заново создавать нужное количество вариантов.
- Создайте UserControlы для логина, приветствия, вопросов и результата. Это позволит раскидать код по разным классам. Когда все в кучу, с программой очень тяжело управляться. Главная форма должна только хранить общие данные и передавать их контролам, а также переключать активные контролы.
- Все контролы имеют свойство Tag, куда можно записать любой объект. Например, индекс этого контрола radiobutton
[i].Tag=i. А потом, вместо простыни проверок, достаточно написать одну строку: otv = (int)(sender as RadioButton).Tag