0
I’m having a hard time solving this problem.
I created a project in Windows Form to open the other forms inside a panel, being that I would like to associate the Forms to be opened in the variavies at the beginning of the code, maybe I have to refer to this Forms several times during the code, I would like to declare them only once in a variable to use the variable instead of the Forms in the Click of the Buttons but I could not.
Form Formulario1;// Gostaria de colocar o Form a ser aberto aqui e utilizar aenas a variavel
Form Formulario2;// Gostaria de colocar o Form a ser aberto aqui e utilizar aenas a variavel
Form Formulario3;// Gostaria de colocar o Form a ser aberto aqui e utilizar aenas a variavel
Form Formulario4;// Gostaria de colocar o Form a ser aberto aqui e utilizar aenas a variavel
private void Abrir_Formulario<MiForm>() where MiForm : Form, new()
{
Form formulario;
formulario = panel_Formularios.Controls.OfType<MiForm>().FirstOrDefault();
if (formulario == null)
{
formulario = new MiForm();
formulario.SuspendLayout();
formulario.TopLevel = false;
formulario.FormBorderStyle = FormBorderStyle.None;
formulario.Dock = DockStyle.Fill;
panel_Formularios.Controls.Add(formulario);
panel_Formularios.Tag = formulario;
formulario.Show();
formulario.BringToFront();
formulario.FormClosed += new FormClosedEventHandler(Fechar_Formulario);
formulario.ResumeLayout();
}
else
{
formulario.BringToFront();
}
}
// BOTÃO FORMULARIO 1
private void button1_Click(object sender, EventArgs e)
{
Abrir_Formulario<Form1>();// Ideal esse Form vir da variavel no inicio
}
// BOTÃO FORMULARIO 2
private void button2_Click(object sender, EventArgs e)
{
Abrir_Formulario<Form2>(); // Ideal esse Form vir da variavel no inicio
}
// BOTÃO FORMULARIO 3
private void button3_Click(object sender, EventArgs e)
{
Abrir_Formulario<Form3>();// Ideal esse Form vir da variavel no inicio
}
// BOTÃO FORMULARIO 4
private void button4_Click(object sender, EventArgs e)
{
Abrir_Formulario<Form4>();// Ideal esse Form vir da variavel no inicio
}
in the variable
Application.OpenForms
you have the collection of Forms that is open in the application, just access them... no need to keep saving each one... if you still want to make a parallel list, use aList<Form>
https://docs.microsoft.com/pt-br/dotnet/api/system.windows.forms.application.openforms?view=netcore-3.1– Rovann Linhalis
What should you consider: Will the form be reused? If so, do not call Close(), use Hide(). If you call Hide() the form will retain the state (fields, properties, etc.), you can create a Resetfields() (or similar) method to clear the form. Perhaps it is more convenient to create a new form instead of resetting its state, see what suits you best.
– user178974