03. marts 2002 - 18:49Der 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?
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.
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!
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
Synes godt om
Ny brugerNybegynder
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.