Gå til innhold

automatisk initialisere og vise forms?


Anbefalte innlegg

Skrevet

Heppsann. Om jeg har lagt til form1.vb, form2.vb ..osv i et prosjekt, finnes det da en måte å automatisk initialisere disse formene og vise de på skjermen, uten at jeg må manuelt skrive dette?

 

dim form2 as Form = new Form2
form2.show()
dim form 3 as Form = new Form3()
form3.show()
'etc

Visual Studio 2005 og vb.net

Videoannonse
Annonse
Skrevet

Ja, for det var jo forferdelig mye å skrive...

 

Hvordan mener du at formene skal vises hvis du ikke forteller programmet AT de skal vises? Maskinen din er nok ikke helt synsk enda...

Skrevet

Hva med å lage deg en egen FormOpener klasse?

Aner ikek om dette virker, men prøv.

public class FormOpener
 public Function FastOpen(ByRef Vindu as Object) as Object
   dim w as Form = new Vindu
   w.show()
   return w
 End
End

Så kan du jo kalle disse slik:

dim Form2 as Form = FormOpener.FastOpen(Form)
dim Form3 as Form = FormOpener.FastOpen(Form)

 

Sparer du noe her? Neppe, men det er morro da :-D

nb! Kanke engang garantere at dette kompillerer :-D

Skrevet

Public Class FormOpener
 Public Shared Function FastOpen(ByVal t As Type) As Form
   Dim w As Form = Activator.CreateInstance(t)
   w.show()
   Return w
 End Function
End Class

 

Dim form1 As Form = FormOpener.FastOpen(GetType(Form1))
Dim form2 As Form = FormOpener.FastOpen(GetType(Form2))

 

tror jeg skulle fungere bedre, nå er dette utestet, men....

Skrevet
Hva med å lage deg en egen FormOpener klasse?

dim Form2 as Form = FormOpener.FastOpen(Form)
dim Form3 as Form = FormOpener.FastOpen(Form)

Sparer du noe her?  Neppe, men det er morro da :-D

9632483[/snapback]

 

New Form1().Show()

New Form2().Show()

New Form3().Show()

New Form4().Show()

 

,,,,

Skrevet
dim form2 as Form = new Form2
form2.show()
dim form 3 as Form = new Form3()
form3.show()
'etc

9630173[/snapback]

Kan noen si meg hva som er vitsen i å deklarere form2 som new form og vise den, istedenfor å bare gjøre slik:

 

Navnpåform.Show() (det navnet du har gitt formen som allerede finnes (?) i designeren)

Skrevet

Fordi det er en støtte som kun er lagt med for at Visual Basic 6.0 brukere ikke skal brast i gråt når de faktisk må venne seg til at Visual Basic.NET er objekt orientert.

 

Dette er riktig fremgangsmåte, og vil føre til at man ikke får hikke når dette ikke går an i noen andre språk.

Skrevet
Fordi det er en støtte som kun er lagt med for at Visual Basic 6.0 brukere ikke skal brast i gråt når de faktisk må venne seg til at Visual Basic.NET er objekt orientert.

9634386[/snapback]

 

Er det lov å begynne å gråte fordi de HAR laget denne "featuren"? :tease:

Skrevet

Takk for svar, men dere misforstår nok noe. Jeg var ute etter en måte å finne alle forms i et prosjekt, loope gjennom og vise de.

 

my.application.openForms viser alle former som er åpna (typisk kun Form1), men jeg ønsker altså å åpne alle former i prosjektet, gjerne ved et knappetrykk.

Skrevet
Takk for svar, men dere misforstår nok noe. Jeg var ute etter en måte å finne alle forms i et prosjekt, loope gjennom og vise de.

9634941[/snapback]

 

Du kan bruke reflection og finne klasser som arver av System.Windows.Form og initialisere og vise disse. Dette blir nok mer kode enn om du skal gjøre det manuelt hvis du ikke har flere enn 50 forms.

 

Men...., det virker som du har en stor "designfeil" i prosjektet ditt. Hvorfor har du så mange forms? Hvorfor skal du vise alle sammen? Dette hørtes veldig rotete ut...

Skrevet

Det er fremdeles kodet, er det ikke? Man må jo fremdeles skrive alle navnene...

 

Og er det en god ide å gjøre det uten deklarasjon? Kjøres New() da?

Skrevet

Men...., det virker som du har en stor "designfeil" i prosjektet ditt. Hvorfor har du så mange forms?  Hvorfor skal du vise alle sammen?  Dette hørtes veldig rotete ut...

9635810[/snapback]

én form per oppgave, liker å skille hver skoleoppgave i egen form

 

 

Hvorfor ikke bare bruke Form_Load eventen?

9636196[/snapback]

Kan ikke se at denne eventen hjelper meg noe i det jeg ønsker :)

Skrevet

Hvis du har et form pr. oppgave trenger du vel ikke vise alle samtidig?

Høres ut som det fort blir rotete (kanskje noe bedre hvis det er et MDI-program)...

 

 

Wubbable, New() er kjekk å kjøre da den kjører InitializeComponent() og gir (iallfall for meg) større muligheter for å sende "variabler" til og fra skjemaet.

Skrevet

Det kan være ønskelig å generere knapper som åpner et vindu der oppgaven ligger. Istedet for å gjøre dette for hver oppgave, kunne jeg tenkt meg å automatisere dette. Jeg leiter rett og slett etter en collection som inneholder alt i my.Forms (denne er ikke iterabel, ser det ut til..)

Skrevet
Hvis du har et form pr. oppgave trenger du vel ikke vise alle samtidig?

Høres ut som det fort blir rotete (kanskje noe bedre hvis det er et MDI-program)...

 

 

Wubbable, New() er kjekk å kjøre da den kjører InitializeComponent() og gir (iallfall for meg) større muligheter for å sende "variabler" til og fra skjemaet.

9637119[/snapback]

 

New blir alltid kjørt uansett. InitializeComponent regner jeg blir kjørt automatisk fordi den arver av System.Windows.Form som kjører den.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...