Gå til innhold

automatisk initialisere og vise forms?


Anbefalte innlegg

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

Lenke til kommentar
Videoannonse
Annonse

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

Lenke til kommentar

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....

Lenke til kommentar
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()

 

,,,,

Lenke til kommentar
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)

Lenke til kommentar

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.

Lenke til kommentar
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:

Lenke til kommentar

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.

Lenke til kommentar
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...

Lenke til kommentar

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 :)

Lenke til kommentar

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.

Lenke til kommentar

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..)

Lenke til kommentar
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.

Lenke til kommentar

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å
×
×
  • Opprett ny...