Kezdőoldal » Számítástechnika » Programozás » C#-ban hogy tudok kicserélni...

C#-ban hogy tudok kicserélni azt a formot, amivel indul a program?

Figyelt kérdés

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)



#Visual C# #Visual Studio #Single Thread
2019. máj. 1. 18:01
 1/5 anonim ***** válasza:
49%

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.

2019. máj. 1. 18:04
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

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 :)

2019. máj. 1. 18:08
 3/5 A kérdező kommentje:
Asszem megvan. Jövök neked eggyel :D
2019. máj. 1. 18:19
 4/5 A kérdező kommentje:
Márcsak az kellene, hogy csak akkor cserélje ki ,ha én az akarom, ne akkor, ha mondjuk ki X-elik
2019. máj. 1. 19:01
 5/5 anonim ***** válasza:

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();

}

}

}

2019. máj. 1. 19:21
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!