HDSoftware Skrevet 16. februar 2011 Skrevet 16. februar 2011 Folkens: Sett at man har en TabControl plassert med la oss si 5 pre designede tabs. Koden for å finne hvilken tab som er valgt er jo slik: switch (TheTab.SelectedIndex) { case 0: // Første TAB .... case 1: // Andre Tab o.s.v. } Men sett at programmet inneholder omorganisering samt muligheten til å legge til nye tabs. Hvordan skal man da kunen finne rett tab? Jeg prøvde SelectedTab uten hell: switch (TheTab.SelectedTab) { case tabEnTab: // tabEnTab er valgt ..... case tabEnAnnenTab: etc... } Dette feiler allerede før kompillering med dette: Error 5 A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type Så folkens. Hvordan ville dere gjort dette?
GeirGrusom Skrevet 17. februar 2011 Skrevet 17. februar 2011 Bruk en if istedet. if(tab.SelectedTab == MyTabPage) { }
miXer Skrevet 19. februar 2011 Skrevet 19. februar 2011 GeirGrusom, det forutsetter vel at du kjenner til alle tabsene? Jeg tror jeg ville brukt en List<TagPage> og ved oppstart fylt opp denne med alle tabsene, og lagt til tabs ettersom bruker legger til flere.
GeirGrusom Skrevet 20. februar 2011 Skrevet 20. februar 2011 Eventuelt har Tab page en Tag egenskap som kan brukes til å identifisere dem.
HDSoftware Skrevet 21. februar 2011 Forfatter Skrevet 21. februar 2011 Hmmm. TAG ja. Den har jeg sett er der på kontroller, men har egentlig aldri tenkt på denne som noe nyttig. Må sjekke opp hva TAG er for noe....
GeirGrusom Skrevet 21. februar 2011 Skrevet 21. februar 2011 Tag er user-defined data. Det er av typen object, så du kan lett lagre en string eller noe der.
HDSoftware Skrevet 21. februar 2011 Forfatter Skrevet 21. februar 2011 Wow! Veldig interresant. Så i praksis kan jeg hekte på hva jeg vil på en kontrol. Også egne klasser/objekter. Nice...
The Jackal Skrevet 22. februar 2011 Skrevet 22. februar 2011 Aller helst burde du vel redesigne akkurat det prøver å få til. Personlig er jeg mer av den oppfatning at om du bruker Tag, så har du gjort noe grunnleggende feil. Du kan ofte komme deg ganske enkelt ut av en slik switch setning ved f.eks implementere metodene som skal kjøres direkte på objektet du switcher på. Altså...noe slik som: public interface ISwitchableObject{void DoStuff();} //implementer på TabObject var obj = TheTab.SelectedItem as ISwitchableObject; obj.DoStuff(); Koden som du har i de forskjellige case delene kan du putte inn i DoStuff metoden istedetfor. Er selvfølgelig ikke alltid dette passer...men et tips å ta med på veien i alle fall
HDSoftware Skrevet 25. februar 2011 Forfatter Skrevet 25. februar 2011 Hmmm. Den var spenstig. Var ikke klar over den muligheten. Skal prøve den...
The Jackal Skrevet 25. februar 2011 Skrevet 25. februar 2011 Normalt i objektorientering...hold funksjonaliteten nærmest mulig objektet det tilhører
GeirGrusom Skrevet 25. februar 2011 Skrevet 25. februar 2011 Ja... Tag er egentlig en Visual basic 6.0 hack ettersom det ikke var noen ekte objektorientering der.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå