DontTouchMyPhone Skrevet 22. november 2009 Del Skrevet 22. november 2009 Hei! Jeg trenger litt hjelp. Jeg skal lage to prosedyrer; den ene skal fylle en matrise med whatever egentlig, og den andre prosedyren skal skrive ut innholdet i matrisen i en listboks. Jeg prøver, men jeg bommer (ganske mye) er jeg redd: ----------------- Public Class Form1 'prosedyre 1 med matrise Private Sub Fargevalg() Dim farge(3) As String farge(0) = "Blå" farge(1) = "Rød" farge(2) = "Gul" farge(3) = "Grønn" End Sub ---------------- Private Sub skrivUt(ByVal matrise) 'prosedyre 2 Dim farge For Each farge In Fargevalg() ListBox1.Items.Add(farge) Next End Sub ---------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'kaller prosedyre 2 skrivUt() ListBox1.Items.Add("farge") End Sub End Class ---------------- Men jeg er nok på viddene ja, noen som har peiling? Lenke til kommentar
DontTouchMyPhone Skrevet 23. november 2009 Forfatter Del Skrevet 23. november 2009 Anyone... Lenke til kommentar
GeirGrusom Skrevet 23. november 2009 Del Skrevet 23. november 2009 variablen 'farge' faller ut av scope. Public Class MyForm Inherits System.Windows.Forms.Form Private farge() As String Private Sub FargeValg ReDim farge(3) farge(0) = "Blå" farge(1) = "Rød" farge(2) = "Gul" farge(3) = "Grønn" End Sub Private Sub SkrivUt() For Each item As String In farge ListBox1.Items.Add(item) Next End Sub End Class Lenke til kommentar
DontTouchMyPhone Skrevet 24. november 2009 Forfatter Del Skrevet 24. november 2009 (endret) Hei, takk for svar! Når jeg prøver denne koden; ___________________ Public Class Form1 Private farge() As String ------------------- Private Sub Fargevalg() ReDim farge(3) farge(0) = "Blå" farge(1) = "Rød" farge(2) = "Gul" farge(3) = "Grønn" End Sub ------------------- Private Sub skrivUt() Dim farge For Each item As String In farge ListBox1.Items.Add(item) Next ----------------------- End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click skrivUt() ListBox1.Items.Add(farge) End Sub End Class _________________________ ...får jeg opp følgende advarsel: "Warning 1 Variable 'farge' is used before it has been assigned a value. A null reference exception could result at runtime." Jeg veit jeg trenger teskje-metoden, men hvorfor virker ikke koden? Jeg før kjørt programmet, men ingenting skjer når jeg trykker på button1, får bare opp en feilmelding som peker på det advarselen kommenterte. Men som nybegynner veit jeg ikke hvordan jeg får dette til å virke. Jeg trodde jeg nå hadde kalt opp riktig? Endret 24. november 2009 av Omicron2 Lenke til kommentar
brgr Skrevet 25. november 2009 Del Skrevet 25. november 2009 For de første, en prosedyre returnerer _ALDRI_ en verdi. Det andre så har du bare Dim farge og ingenting mer. Function FargeListe() As String() 'returnerer ett String array med fargeverdiene Redim FargeListe(3) FargeListe(0) = "Blå" FargeListe(1) = "Rød" FargeListe(2) = "Gul" FargeListe(3) = "Grønn" End Function Sub SkrivUt() 'Nå vil vi bruke hver forekomst i listen FargeListe 'fargeliste er en funksjon som vi har laget og returnerer listen med fargekoder. For Each farge As String In FargeListe() ListBox1.Items.Add(farge) Next End Sub Sub Button1_Click() Handles Button1.Click SkrivUt() End Sub Vennligst LES og PRØV og forstå hva jeg gjor annerledes i koden min, for å faktisk lære deg hva som ble gjort feil. Lenke til kommentar
MailMan13 Skrevet 26. november 2009 Del Skrevet 26. november 2009 (endret) Den "korrekte" løsning, aldri for tidlig å legge seg til gode vaner: Først et value object for farge, fordi eksplisitte navn ruler: Public Class Farge Public _navn As String Public ReadOnly Property Navn() Get Return _navn End Get End Property Public Overrides Function ToString() As String Return Navn End Function Public Sub New(ByVal n As String) _navn = n End Sub End Class En funksjon som lister opp fargene, for vi vil vel ikke blande innhold og presentasjon, vil vi vel?: Public Class FargeGenerator Public Function GenererFargeListe() As List(Of Farge) Dim l As New List(Of Farge) l.Add(New Farge("Blå")) l.Add(New Farge("Gul")) l.Add(New Farge("Rød")) Return l End Function End Class Så binder vi disse i GUI Private Sub btnFyllFarge_Click(ByVal s As Object, ByVal e As EventArgs) Handles btnFyllFarge.Click Dim fargeGenerator As New FargeGenerator lstFarge.DataSource = fargeGenerator.GenererFargeListe End Sub Endret 26. november 2009 av MailMan13 Lenke til kommentar
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å