if a database-driven or table-driven approach seems too complex, I suggest you do the following:
- create a separate Form for each question, any way you choose (say Visual Designer);
give them all the same Size, and probably no border at all, no Close/Minimize/Maximize/SystemBox.
- create a main Form, which holds:
- a Panel (say questionPanel) with the same size as your question Forms;
- a "Previous" and a "Next" Button;
- whatever else you deem necessary.
- provide a Form variable, lets call it currentQuestionForm, initially null.
Now to show a question, this is what your code should do:
- remove the previous question (i.e. undo what follows for the old question); this includes:
- assuming currentQuestionForm is not null:
- removing it from the questionPanel.Controls collection
- set currentQuestionForm=null;
- add the new question by showing newQyestionForm:
- set currentQuestionForm=newQyestionForm
- setting its currentQuestionForm.TopLevel property false
- setting its Location to (0,0)
- adding it to the questionPanel.Controls collection
This way, your question forms live independently, and never get loaded at the same time, keeping