C#-ban hogy tudok kicserélni azt a formot, amivel indul a program?
Megjelenítem az új formot Form.Show()-al,
Majd, szeretném eltüntetni a régit.
Kétféle módon próbálkoztam:
this.Close() - de ez bazárja az egész programot
this.Hide() - ez ugyan elrejti, de miután a másik formot bezárom, a program fut tovább. (gondolom ott marad a háttérben a main form)
A Program.cs fájlban van a mágia, mégpedig itt, ezen a soron:
Application.Run(new Form1());
Ezt a Form1-et kell kicserélned a te form-odra.
Próbálkoztam ezzel is, de a következő hibaüzenetet kaptam:
"n unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
Additional information: Egy második üzenethurok létrehozása egyetlen szálon nem érvényes művelet. Használja helyette a Form.ShowDialog metódust."
Ha erre tudsz valami megoldást, azt nagyon köszönöm :)
Itt van szebben is, hátha így jobb lesz: [link]
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Példányosítod a Form2-őt.
var form2 = new Form2();
//A következő két sor azért kell, hogy a form2 pontosan a form1 helyén nyíljon meg.
form2.Location = this.Location;
form2.StartPosition = FormStartPosition.Manual;
//Ttt meg tudod mondani, hogy a form2 FormClosing eseményekor mi történjen.
//Vagyis ha bezárod a form2-őt, akkor most a form1-et fogja megjeleníteni a this.Show(); miatt.
//A this szó a kódban mindig arra az objektumra vonatkozik, amelyikbe éppen beleírod. Magyarul itt egy form1.
form2.FormClosing += delegate { this.Show(); };
//valószínűleg nem tudod mi az a delegate, de ezt a sort ki tudnád így is váltani:
//form2.FormClosing += new FormClosingEventHandler(CloseApplication);
//A CloseApplication egy szimplán általam létrehozott void.
//Ha példányosítasz egy FormClosingEventHandler-t, akkor kiírja a Visual Studio, hogy egy void-ot bár bemeneti paraméterként.
//Azt is kiírja, hogy ennek a voidnak milyen két bemeneti paramétere legyen.
//Megmutatjuk a 2-es formot, az 1-eset pedig elrejtjük.
form2.Show();
this.Hide();
}
private void CloseApplication(object sender, FormClosingEventArgs e)
{
this.Close();
}
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!