Declareren combobox

Status
Niet open voor verdere reacties.

joke1

Gebruiker
Lid geworden
24 mei 2006
Berichten
159
Ik heb form1 en form2. Op form2 staat een combobox met verschillende ingangen. Mijn programma begint met form1 en met een klik gaat het dan naar form2 waar ik een waarde in de combobox kan kiezen en dan dat het terug naar form1 enz.

Waar en hoe moet ik de waarden van de combobox declareren want dat moet maar 1 keer gebeuren? Als ik dat doe in form2 dan gebeurt dat elke keer dat die form geladen wordt en dat wil ik vermijden.
 
Gebruik je form2 voor alleen die combobox?
 
Bedankt Edmoor voor je reactie.
Nee, daar moet nog het een en het ander gebeuren maar de combobox blijft steeds hetzelfde.
 
Waarom wil je vermijden dat dit elke keer gebeurt? Zijn de waarden niet static, worden ze gedownload (of iets anders dat tijd kost)?

Als je het in de constructor van je form2 doet is er niets aan de hand, ook zou je de waarden in form1 kunnen bewaren en doorgeven aan form2 als je dat liever hebt. (maar als je ze niet gebruikt in form1 zou ik ze niet daarin bewaren)
 
Bloodshed jij ook bedankt voor je reactie.
De combobox waarden zijn vast en mogen niet wijzigen.
Als ik jullie antwoorden zo lees moet ik mijn methode, het declareren van de combobox gewoon behouden, dus in form2.
De tijd die het declareren vraagt is te verwaarlozen, het gaat mij om het principe. Iets éénmaal doen of elke keer telkens het zelfde opnieuw is tijdverlies. Op dit moment is de tijd te verwaarlozen.
 
Zonder voorbeeld, screenshot, code, weten we niet hoe je ze declareert. Is het een form (een user settings form misschien?) dat je sluit na gebruik of is het iets wat open blijft (hide/show eventueel)?

Ik weet niet echt meer hoe het in WinForms ging maar ik denk dat je de waarden bij de properties ergens erin zet. Als je het zelf via code doet heb je het in de constructor staan neem ik aan. Ook kun je een lijst met waardes 1x declareren in form1 en telkens doorgeven naar form2, maar als form1 niets met die lijst doet is het niet echt de plek voor die lijst.

Ik begrijp de 'eenmaal of telkens opnieuw' niet echt voor dit voorbeeld. (als ze nooit veranderen vul je de lijst ook nooit opnieuw)
 
Nu doe ik het zo:
Code:
   Private Sub frmDetail_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Combo1.Items.Add("http://www.google.be")
        Combo1.Items.Add("http://www.anti-spy.info/file/index.html")
        Combo1.Items.Add("http://www.2-spyware.com/parasites.php")
        Combo1.Items.Add("http://www.spywarewarrior.com/rogue_anti-spyware.htm")
    End Sub
frmDetail is dus mijn form2 en op deze manier wordt die code telkens uitgevoerd bij het openen van form2. Omdat de waarden van Combo1 nooit wijzigen was het beter om die code enkel uit te voeren bij de start van het programma.
 
Als je deze lijst met urls alleen in frmDetails gebruikt zou ik hem daar houden in plaats van te splitsen. Als je de waarden voor je combobox in frmDetails ergens anders declareert maak je het jezelf misschien alleen maar moeilijker om te onderhouden als je over 6 maanden nog een url zou moeten toevoegen. Want het eerste wat je gaat doen is in frmDetails kijken om ze te wijzigen.

Je kunt ook deze 4 strings in de designer toevoegen in je properties window. (maar dan gebeurt er precies hetzelfde zoals je het nu doet, alleen staan de 4 regels ergens anders uit het zicht)

En als je de lijst ergens anders declareert moet je hem toch in je combobox laden in je load event, dan krijg je alsnog een foreach loop. Als je 10+ van dit soort lijstjes hebt in je programma is het misschien wel weer handig om een static class te maken die deze waarden heeft zodat je deze allemaal netjes in een bestand bij elkaar hebt staan. Of een text/json/xml bestandje waar je deze waarden uitleest zodat je deze kunt aanpassen zonder dat je het programma moet compilen.


Uiteindelijk is het wel eigen voorkeur voor dit aangezien je dit op 100 manieren kunt doen, maar je moet toch je combobox vullen als je een new frmDetails aanmaakt, daar ontkom je niet aan.
 
OK Bloodshed bedankt voor je antwoord. Ik zal het dus houden zoals het nu is. Ik vond het nuttig om eens iemand anders zijn gedacht te vragen.
Ik zal het topic nu ook maar sluiten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan