27. juni 2003 - 15:16Der er
18 kommentarer og 1 løsning
Noget så simpelt som
Jeg er tidligere Visual Basic 6 programmør og er igang med at sætte mig ind i VB .NET.
Jeg vil nu noget så simpelt som at ændre Text-egenskaben for en Button control på en Form1 (der allerede er loadet) fra et modul, men jeg kan ikke referere til Form1.Button1.Text fra modulet .. Den siger at "A reference to a non-shared member requires an object reference". Hvad skal jeg gøre?
Dine buttons er per default private medlemmer af din Form. Jeg er faktisk ikke sikker på, om du kan lave om på det. Men du kan lave en workaround ved at give din funktion en reference til knappen med, f.eks. sådan her:
Public Function txtChange(ByRef obj As Object) As Boolean obj.Text = "Noget nyt tekst" txtChange = True End Function
Og så kalde funktionen således:
txtChange(Button1)
Bemærk at jeg har defineret 'obj' som Object, på den måde kan du også sende andet end knapper med til txtChange funktionen - så længe det medsendte objekt bare har et Text medlem.
Jeg har lige hittet ud af hvordan du gør din knap public : Vælg properties for din knap. Under design er en værdi, der hedder "Modifiers". Her kan du vælge public, så kan du tilgå din knap sådan som du ønsker. ( Form1.Button1.Text )
... men at gøre knappen public bryder selvfølgelig lidt med dataindkapslingsprincippet og den objekt orienterede tankegang. Men du ved bedst selv hvad det skal bruges til, og hvilken løsning, der vil være den bedste.
jeg tror ikke at han ønsker at gøre knappen public, men bare at kunne tilgå en funktion gennem denne knap. det jeg mente han kunne gøre, var at gøre funktionen public, således at den kunne tilgås andre steder...?!
Det, der er humlen i det, er at man i VB .NET ikke kan tilgå en Buttons metoder fra et andet modul, fordi knappen per default er Private eller Friend. For at mikbj kan tilgå Form1.Button1.Text fra hans funktion i et andet modul, skal knappen være public - eller også skal han sende en reference til knappen med til funktionen, som skrevet herover.
Hmm .. Jeg kan ikke tilgå Form1.Button1.Text selvom jeg sætter Modifiers = Public. Jeg kan ikke engang udføre en hjemmelavet Public Sub SetInfo() vha. Form1.SetInfo() .. (Sub'en ligger selvf. i formens egen kode) ...
Ok .. Det kan vel ikke være rigtigt at man skal lave diverse workarounds og snørklet kode bare for at tilgå et objekts egenskaber? .NET må da være smartere indrettet end det :o)
Class Module1 Public Sub Test() Dim f as New Form1 f.Button1.Text = "" End Sub End Module
Du får point!
Synes godt om
Ny brugerNybegynder
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.