Avatar billede laptopalan Nybegynder
19. august 2004 - 16:48 Der er 6 kommentarer og
1 løsning

lidt hjælp:)

hvad er der galt med koden her? hvorfor kan jeg ikke udrage me.text?

    Dim x As New test(Me.text)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        x.tester()
    End Sub
    Public Class test
        Private name As String
        Public Sub New(ByVal name As String)
            Me.name = name
        End Sub
        Public Sub tester()
            MsgBox(name)
        End Sub
    End Class
End Class
Avatar billede laptopalan Nybegynder
19. august 2004 - 17:32 #1
smutter kigger ind i morgen:)
Avatar billede clausc Nybegynder
20. august 2004 - 11:39 #2
Mit gæt er, at objektet x skabes før Form1 får kaldt sin InitializeComponent, derfor er Me.Text stadig blank.

Koden burde derfor være:

Dim x As test(Me.text) ' <---- IKKE New
Private Sub Form1_Load(...) Handles MyBase.Load
  x.tester()
End Sub
   
Public Class test
  Private name As String
  Public Sub New(ByVal name As String)
    Me.name = name
  End Sub
       
  Public Sub tester()
    MsgBox(name)
  End Sub
End Class
Avatar billede clausc Nybegynder
20. august 2004 - 11:44 #3
BLEH! Glemte en linie!

Dim x As test(Me.text) ' <---- IKKE New
Private Sub Form1_Load(...) Handles MyBase.Load
  x = New test(Me.Text)  ' <----- Den glemte linie  ;)
  x.tester()
End Sub
   
Public Class test
  Private name As String
  Public Sub New(ByVal name As String)
    Me.name = name
  End Sub
       
  Public Sub tester()
    MsgBox(name)
  End Sub
End Class
Avatar billede laptopalan Nybegynder
20. august 2004 - 14:45 #4
jeg forstår det ikke helt :S

hvad gør det - at der ikke står new test?
Avatar billede laptopalan Nybegynder
20. august 2004 - 18:46 #5
en forklaring?
Avatar billede clausc Nybegynder
20. august 2004 - 22:19 #6
x er en variabel på modul niveau, dvs. den bliver lavet samtidig med din form. Når du så laver:

Dim x As New Test(...)

så bliver x ikke bare erklæret men også instantieret. Og siden det sker *før* din kode i formens constructor kaldes, så er formens Text-property stadig ikke sat (det sker først i InitializeComponent. Check selv det kode som designeren skjuler, du kan se at formens Text property på et tidspunkt bliver sat.


Ved at 'nøjes' med flg:

Dim x As Test

så er x erklæret med stadig null/nothing. Når du så i Form_Load eller i formens constructor *efter* kaldet til InitializeComponent laver en instans af klassen, så har din form fået sin Text property sat.

Hvis det stadig er lidt sort, så sæt et breakpoint i InitializeComponent og et i Test klassens constructor.
Avatar billede laptopalan Nybegynder
21. august 2004 - 00:36 #7
ok :) nu virker det og det hele :D takker Clausc
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester