Avatar billede teardrop Nybegynder
03. marts 2002 - 18:49 Der er 2 kommentarer og
1 løsning

VB.NET og Windows Forms

Hej alle, jeg sidder og prøver at forstå hvordan .Net Windows Forms virker. Jeg vil gerne lave et forsøg, hvor jeg har 2 forms, og jeg vil fra den ene åbne den anden og vice versa. Problemet er, at jeg bruger den ene form til at starte op i (initialized), og jeg instantierer den anden form i denne.
Et knap eksempel fra form1:

private button1_click bla bla
Dim form2 as system.windows.forms.form = new form2
Me.Hide()
form2.Show()
end button bla bla

Dette starter den anden form (form2), men læg mærke til at jeg dimensionerer form2 i knappen (dette kan selvfølgelig også lade sige gøre andetsted i form1, dvs. at form2 ikke skal instantieres HVER gang jeg trykker på knappen).

Når jeg så har startet form2 og Hide'et form1, så vil jeg gerne fra form2 tilbage til form1. Spørgsmålet er HVORDAN?

Jeg kan selvfølgelig skrive samme kode i form2 under en knap:

private button1_click bla bla
Me.Hide()
form1.Show()
end button bla bla

men problemet er, at jeg kan ikke tilgå form1... jeg aner ikke hvordan jeg skal styre dette flow.

Noget andet er, jeg har købt et par VB-bøger for at lære hvordan jeg skal lave windows-apps, jeg har fattet alt det basale med en form, controls, popups, initialsizecomponent (init-metoden for en form), osv osv. Men det at styre et HELT applikationsflow, HVOR kan jeg læse om det?

På forhånd tak.
Avatar billede reffak Nybegynder
05. marts 2002 - 00:23 #1
Hej

For at opnå den ønskede funktionalitet, skal første forms onclick se sådan ud:

Dim MyForm As New Form2()
MyForm.Owner = Me
MyForm.Show()
Me.Hide()

-Altså identisk med din kode, bare med den nye linje MyForm.Owner = Me
Når du så skal tilbage fra den nye form, til den gamle, gøres det sådan:

Me.Hide()
Owner.Show()

Og voila, den gamle form er fremme igen.
Men som du nok selv vil kunne se, så er hele dette scenarie lidt unaturligt...du ser ikke andre applikationer opføre sig sådan. Derfor synes jeg at du skal kigge på en anden løsning, hvis du har brug for at arbejde med flere forms på én gang, nemlig MDI strukturen - Multiple Document Interface - som er meget enklere end det lyder : Opret en form, sæt dens property IsMDIContainer til true, og så har du en container, hvori andre forms kan leve - ligesom vi kender det fra f.eks. word, hvis du har flere dokumenter åbne på én gang.
Når du skal tilføje forms til denne container, Dimensioneres de ligesom tidligere. Nu skal du bare sætte en anden property end .Owner, nemlig .MDIParent = Me. Nu er den nye form et MDIChild til din MDIContainer - og du fornemmer nok et hieraki opbygge sig.

Læs mere i MSDN.

God fornøjelse
MVH
Avatar billede teardrop Nybegynder
06. marts 2002 - 12:45 #2
Tusind tak for svaret reffak. Jeg havde sådan set forstået det med MDI og child-forms osv. Men det jeg prøvede på at sige var, at ligesom man har et flow på internettet med at man via udfyldningsformulare går fra et skærmbillede til et andet, hvordan realiserer jeg det i en windows applikation. Jeg kan forstå at jeg skal lave flere uafhængige forms, spørgsmålet er om det er et sæt af child-forms, eller HELT uafhængige (dvs. ikke MDI?). Endvidere, hvis jeg har flere forms, hvordan laver jeg så mit design så det ikke ser ud til at jeg skifter forms (det skal ikke "blinke"), det skal se ud som om, at jeg er på den "samme" form. Det er DET flow jeg snakker om... håber at du kan svare på, eller evt. hevise til noget jeg kan læse selv!

På forhånd tak.
Avatar billede kedde65 Praktikant
31. marts 2002 - 14:25 #3
Det du i reealiteten efterspørger, er den funktionalitet du faktisk har i et faneblads struktur. Her kunne du nederst sætte en knap der skifter til næste blad.

Ellers kan du jo lave den med kun en form, og sætte alle dine formular felter på den ene formular. På den måde ville du så kunne skjule og vise dem efterhånden somdetvar nødvendigt.

Kedde
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
Kurser inden for grundlæggende programmering

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