Взаимодействие форм C#

У меня 3 формы. Должны запускаться, а потом закрываться, вот так: form1 > form2 > form3 > form1 > ... и т.д.
Надо сделать так, чтобы соблюдались все правила ООП.

1 ответов


Вопрос, конечно, не очень хорошо оформлен, если не сложно - конкретно сформулируйте проблему.
А так постараюсь дать ответ, который по-моему подходит:

Так вот, в данном случае будет проще использовать дополнительный класс, ну скажем FormCaller, притом будет разумно сделать ее статической с единственным методом, скажем - CallForms, тогда в этом методе будет очень легко вызывать вышеперечисленные формы в любом желаемом порядке, в общем случае сказанное можно "кодить" так:
(из-за размера ответа вынужден выкладывать по частям...)



public static class FormCaller
{
     //в качестве возвращаемого значения можно и bool задать
     //чтобы оповестить, если что пойдет не так
     public static void CallForms()
     {
          Form2 frm2 = new Form2();
          frm2.Show();

          Form3 frm3 = new Form3();
          frm3.Show();

          //...... и так далее

     }
}
 
(из-за размера ответа вынужден выкладывать по частям...)

Здесь видно, что первая форма не создается, это будет сделано в точке входа и при этом когда будет происходить инициализация компонентов формы или загрузка формы, там и будет вызван статический метод CallForms класса FormCaller. Для ясности допустим у нас есть класс первой формы и вызов последующих форм будет происходить в конструкторе этой формы(если Вам нужна другая "вызываемость", Вы можете запросто переставить часть кода, отвечающего за вызов остальных форм в тот метод, в котором вы намерены "начать" вызов соответствующих форм с предопределенной последовательностью).


public class Form1 : Form
{
     //constructor
     public Form1()
     {
          //InitializeComponents();
          FormCaller.CallForms();
          //....
     }
}
 

И, конечно, вызов первой формы в данном случае происходит в точке входа:

public static class EntryPoint
{
     public static void Main()
     {
          Application.Run(new Form1() );
     }
}
 

Думаю, при необходимости легко можно изменять и последовательность вызовов форм, и сами функциональности форм. Впрочем ответ не единственный...