Взаимодействие форм 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() );
}
}
Думаю, при необходимости легко можно изменять и последовательность вызовов форм, и сами функциональности форм. Впрочем ответ не единственный...
public class Form1 : Form
{
//constructor
public Form1()
{
//InitializeComponents();
FormCaller.CallForms();
//....
}
}
И, конечно, вызов первой формы в данном случае происходит в точке входа:
public static class EntryPoint
{
public static void Main()
{
Application.Run(new Form1() );
}
}
Думаю, при необходимости легко можно изменять и последовательность вызовов форм, и сами функциональности форм. Впрочем ответ не единственный...