jag vill gömma min Form1 när jag startar programmet. Hej, jag har bara en form så den måste var startup. Hej Joakim, Att den endå syns beror på att Load körs innan formuläret visas. Dvs. du sätter det till osynligt innan det atuomatiskt gjorts synligt. Johan Svensson du har inget liten kod snutt att visa? Även konstruktorn körs innan formuläret "automatiskt" visas... Dvs. du gör det osynligt när det redan är osynligt. Det du kan göra är att köra "this.Visible = false;" i Activated eventet. <code> tack Marcus Agbrant. Hej,Gömma Form
Skriver jag this.visible = fasle så kommer det upp iaf.
Hur gör jag?Sv: Gömma Form
Din form skall inte vara start-up objekt överhuvudtaget. Kolla att programmet har en annan startpunkt.
Lycka till!
// JohanSv:Gömma Form
sätter jag this.visible=fasle i Form_Load funkar det inte.
sätter jag this.visible=false i Form_Paint funkar det men inte när jag vill visa den igen.
även om jag använder en variabel som ändras så vill den inte.eftersom this.visible kallar på Form_Paint bildas en evighets loop.Sv: Gömma Form
"jag har bara en form så den måste var startup."
Det är ett klassiskt misstag. Nej, den måste inte och skall inte vara start-up.
Lägg in en kodfil där du har din Main funktion och se till att det är den som är startpunkt i ditt program.
Därifrån skapar du en instans av ditt formulärobjekt och ändrar egenskaper etc och/eller anropar olika metoder som t.ex. att visa den.
Lycka till!
// JohanSv: Gömma Form
Sv:Gömma Form
Trodde jag förstog hur du mena men får det inte att funka.
Testa detta i en class.
Detta startar upp formen men det syns,
[STAThread]
static void Main()
{
Form1 frm1 = new Form1();
frm1.Visible=false;
System.Windows.Forms.Application.Run(frm1);
}
Ser mara fomen en kort stund sen stängs programmet ner.
[STAThread]
static void Main()
{
Form1 frm1 = new Form1();
frm1.Visible=false;
frm1.Show();
}
Sv: Gömma Form
Det eventet körs efter formet har blivit visible=true. Men tydligen innan det ritats ut.Sv: Gömma Form
[STAThread]
static void Main()
{
Form1 frm1 = new Form1();
frm1.Visible=false;
System.Windows.Forms.Application.Run(frm1);
}
</code>
Du gör ett litet fel där, Run-metoden visar nämligen det fönster som skickas in som parameter. I den andra kodsnutten du visade hade du 1) att visa fönstret 2) ingen messageloop som fick programmet att avslutas när main-metoden var slut
Gör såhär istället:
<code>
[STAThread]
static void Main()
{
Form1 frm1 = new Form1();
frm1.Visible=false;
System.Windows.Forms.Application.Run();
}
</code>
så ska det fungera :)Sv:Gömma Form
Detta löste det hela.
private void Form1_Activated(object sender, System.EventArgs e)
{
if(visa==true)
{
this.WindowState= FormWindowState.Normal;
}
this.Visible = visa;
}
Sv: Gömma Form
Att köra olika typer av loopar är inte bra, det suger bara en väldig massa prestanda..
Du hade faktiskt tolkat mig ganska bra, men missat i hur du visar forumläret. Du valde att visa det icke-modalt (asynkront) och då gick programmet ivdare och avslutades och därmed städade garbage collectorn bort ditt formulär.
I stället skall du visa formuläret modalt (synkront) med metoden ShowDialog. Exempel:
<code>[STAThread]
static void Main()
{
Form1 frm1 = new Form1();
frm1.Visible=false;
frm1.ShowDialog();
}</code>
Lycka till!
// Johan