Если я правильно понимаю, вы вызываете CreateBoxAndQuestion каждый раз, когда выбирается новый вопрос.
Но вы создаете (и уничтожаете) форму каждый раз, когда ваш код входит в этот метод.
Первым подходом было бы сохранить создание формы, метки, кнопки и панели вне метода (возможно, в режиме разработки), а затем передать эти элементы управления методу как
РЕДАКТИРОВАТЬ: Где-то в вашем коде перед вводом нагрузки вашего следующего вопроса:
frmQuestion _form = null; // Global
// Create a global instance and keep it without displaying
if(_form == null) _form = new frmQuestion(); // frmQuestion created with panel, label e button via FormDesigner
тогда, когда вам нужно заполнить _form вызов
CreateBoxAndQuestion(_form, _form.Panel, _form.Label, questionText);
В этом примере я передаю _form в CreateBoxAndQuestion, но это не является обязательным, поскольку является глобальным. Вы можете изменить CreateBoxAndQuestion для непосредственного использования глобального экземпляра.
private void CreateBoxAndQuestion(frmQuestion f, Panel p, Label l, string _label)
{
// Do not display your form here....
}
Теперь при вводе метода очистите все элементы управления RadioButton на панели. Коллекция элементов управления
for (int i = p.Controls.Count - 1; i >= 0; i--)
{
p.Controls.RemoveAt(i);
}
остальная часть кода должна изменяться только для отражения нового текста, назначенного метке и элементам управления, и повторного добавления кнопок RadioButtons на панель. Больше не нужно создавать и повторно инициализировать метку формы, кнопку.
label.Text = _label;
Не забудьте уничтожить _form в конце вашей программы с помощью _form.Dispose ();