Avatar billede amews_aj Nybegynder
14. maj 2006 - 11:46 Der er 24 kommentarer og
1 løsning

Skjul form ved start?

Jeg vil gerne have skjult min form til at starte med, altså den bliver vist som et notifyIcon og derfor vil jeg gerne skjule selve formen.

Jeg har prøvet i Form1_Load at sætte this.Visible = false; men det virker ikke. Hvis jeg sætter det som action på en button så virker det fint, det er kun når man starter applicationen den ikke vil.

Jeg har også prøvet med
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
men så lægger den sig minimeret ovenpå skrivebordet nede i hjørnet.
Jeg har fået den fjernet fra taskbaren, men kan altså ikke få skjult formen ved opstart, efterfølgende kan jeg godt ved tryk på en knap.

Hvad gør jeg?

PS: Bruger MS VS C# 2005
Avatar billede nielle Nybegynder
14. maj 2006 - 12:07 #1
Prøv at sætte den på Shown-eventen i stedet for på Load-eventen:

        private void Form1_Shown(object sender, EventArgs e)
        {
            this.Visible = false;
        }
Avatar billede hmortensen Nybegynder
14. maj 2006 - 12:11 #2
Ved at køre den i shown eventen, kan man nå at se formen åbne.
Hvis du vil undgå det helt, kan du ændre din main metode til flg.:
Form1 f = new Form1();
ApplicationContext ac = new ApplicationContext();
Application.Run(ac);
Avatar billede amews_aj Nybegynder
14. maj 2006 - 12:23 #3
main metoden er det den der hedder public Form1() ?

Eller hvorhenne, da jeg er rimelig ny til C#, og bruger VS C# 2005 kan det være jeg skal ind i den der hedder Form1.Designer?

Hvor skal jeg sætte det ind?

Hvis jeg sætter det ind i public Form1() så åbner den uendeligt mange notifyIcons
Avatar billede hmortensen Nybegynder
14. maj 2006 - 12:24 #4
Du skal åbne filen der hedder "Program.cs".
Avatar billede amews_aj Nybegynder
14. maj 2006 - 12:30 #5
når jeg sætter den kode ind virker resten af min kode ikke, så går der kludder i det hele. Det er når jeg bruger Form1 f = new Form1();
Avatar billede hmortensen Nybegynder
14. maj 2006 - 12:33 #6
Har du fjernet/udkommenteret de andre linier i din main metode?
Avatar billede amews_aj Nybegynder
14. maj 2006 - 12:42 #7
Ja, prøvede lige igen, mystisk det virkede - HALVT...

Jeg har et sted i min kode lavet en handling på luk knappen

        private void Form1_Closing(object sender, CancelEventArgs e)
        {
            srv.stopall();
        }

srv.stopall() stopper alle aktiviteter, og derefter skal formen lukkes, men selvom formen forsvinder, er applicationen ikke helt lukket, jeg får ingen fejl eller noget.
Når jeg ikke indsætter din kode, så virker det fint, men når din kode kommer ind, så lukker den ikke formen korrekt, den hænger...
Avatar billede amews_aj Nybegynder
14. maj 2006 - 12:50 #8
Den kører fint igennem stopall, men lukker ikke formen...
Avatar billede amews_aj Nybegynder
14. maj 2006 - 12:55 #9
ved at kigge på hvad den egentlig gør, så normalt når den lukker, kører den igennem noget Dispose(), og efter det, går den til: Application.Run(new Form1());
men den linje findes ikke på den nye måde, hvad gør man ved det..?
Avatar billede hmortensen Nybegynder
14. maj 2006 - 12:58 #10
Du kan tilføje Environment.Exit(0); til closing eventen, så skulle applikationen gerne lukke helt ned.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:03 #11
Tak det virker også, er det så en korrekt måde at gøre det på ??

Og så en ting til:

På mit notifyIcon har jeg en lille ContextMenu hvor jeg bl.a. har en exit

        private void exit_Click(object sender, EventArgs e)
        {
            srv.stopall();
            Environment.Exit(0);
        }

Hvis jeg har haft åbnet selve formen og minimeret den til iconet igen, så kan jeg fint bruge den, men ellers så siger den fejl: Objektreferencen er ikke indstillet til en forekomst af et objekt.
Det er srv der er null
Men den er allerede startet i Form1_Load: srv = new Server();
men bliver den ikek loadet før formen har været visuelt åben ?

hvis jeg indsætter

        private void exit_Click(object sender, EventArgs e)
        {
            this.Visible = true;
            srv.stopall();
            Environment.Exit(0);
        }
så kan den godt, men så får man jo et glimt af formen...
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:05 #12
Har lige testet, og det er problemet at Form1_Load ikke bliver kørt, hvilket er højst nødvendigt, hvordan tvinger jeg den til at køre?

public void Form1_Load(object sender, EventArgs e)
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:05 #13
Hvor instantecere du srv ?
Hvis du gør det i form_load vil det ikke virke.
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:06 #14
I stedet for form_load så put koden i constructoren (den metode der bliver kørt når et object "startes").
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:07 #15
Hehe, og hvor er det.... :S

Er som sagt ikke ret meget inde i C# endnu
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:09 #16
En constructor hedder det samme som klassen og har ingen retur type, så hvis din form hedder Form1, vil constrcutoren se sådan her ud:
public Form1()
{
}
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:12 #17
godt...

sidste spørgsmål..
når andre forbinder til en via telnet i en cmd, kan de så gøre noget på ens pc ?
forhåbentlig ikke..
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:13 #18
De kan kun gøre ting som du tillader i din applikation.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:14 #19
og når jeg kun har åbnet for forbindelsen og ikke lavet andet, så kan de ikke??

smid et svar..
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:19 #20
Jeg forstår ikke helt spørgsmålet, du har lavet en server, der behandler nogle indkomne klienter - klienterne vil så kun være i stand til at udføre din kode.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:22 #21
Ja men hvis jeg kun lytter for klienter, men ikke laver nogle actions til dem, så kan de intet lave kun forbinde...

Forresten, det med Enviroment.Exit(0); er det en korrekt måde at afslutte sin app. på ?
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:27 #22
?
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:30 #23
Ja.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 13:37 #24
ok, tak for hjælpen ;)
Avatar billede hmortensen Nybegynder
14. maj 2006 - 13:38 #25
Det var så lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester