2016-04-11 24 views
0

Başkalarından bir sınıftaki dizeye erişmenin en iyi yolu nedir? Tek bir sınıf Ayarlarım var, bunlar (model, seri, kullanıcı, şifre vb.) Gibi birden çok değişken yükleyen, bu dizeye belirli ayarların yapılması gereken diğer sınıflardan erişmek istiyorum. i Ayar Class farklı şeyler gereken bazı çoklu sınıfları var bu yüzden, bu değerleri erişmek için en iyi yolu nedir TamamVB.net, bir değişken dizesine birden çok sınıf erişimi

Public Class Settings 
    Public SerialNumber As String 
    Public ModelName As String 
    Public SystemVer As String 
    Public System_Ver As String 
    Public BiosVen As String 

    Sub SetSomeThing 

     SerialNumber = "12313" 
     ModelName = "Toshiba" 
     SystemVer = "Windows 8" 
     System_Ver = "PRO" 
     BiosVen = "AMI" 

    End Sub 

End Class 

Class Load 

    Sub get_Bios 
     Dim Settings As Settings = New Settings() 

     Dim serial_number = Settings.SerialNumber 'Doesnt works, it's empty string ;(

    End Sub 

End Class 

mı? Örnekte olduğu gibi yapmaya çalıştığımda her zaman boş dizelerim var. Tabii ki bu değişkenlerin birçoğu var, bu sadece çok zayıf bir örnek.

+1

Aynı örneği kullanmanız gerekir. – SLaks

+2

Kodunuzda 'settings.SetSomething' denilmediniz. Her yeni ayar() 'yeni bir kopyasını oluşturur ve bu kopyayı, aynı ayarları kullanmak isteyen kodun herhangi bir bölümüne kaydetmeniz ve iletmeniz gerekir. –

+0

sizin için iyi bir öğrenme başlangıcı http://www.dotnetperls.com/property-vbnet – Claudius

cevap

0

o zaman böyle bir yapı oluşturabilir ayarlarınıza yalnızca bir örneği varsa ...

Friend Class Form1 
    Public Class Settings 
     Public Shared SerialNumber As String = "" 
     Public Shared ModelName As String = "" 
     Public Shared SystemVer As String = "" 
     Public Shared System_Ver As String = "" 
     Public Shared BiosVen As String = "" 
    End Class 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Settings.BiosVen = "mybios vendor" 
     MessageBox.Show(Settings.BiosVen) 
     Dim p As New otherclass 
     p.MySub() 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim newForm2 As New Form2 
     newForm2.Show() 

    End Sub 
End Class 

Public Class otherclass 
    Public Sub MySub() 
     MessageBox.Show(Form1.Settings.BiosVen) 
    End Sub 
End Class 

başka formda bu başvuru istiyorsanız, OtherClass

yukarıdaki gibi yapabilir

Form2 Kod ayarların yapının birden çok örneği Ancak eğer

Public Class Form2 
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     MessageBox.Show(Form1.Settings.BiosVen) 
    End Sub 
End Class 

- örneğin bir senin Form1 sınıfta farklı bilgisayar ayarlarının listesi daha sonra yerine yapısını bir kamu malına yapma, ayarların List kamu yapmalıdır - Form2 Kanunu değiştirildi uygun sayesinde bu

Friend Class Form1 

    Public Class Settings 
     Public SerialNumber As String 
     Public ModelName As String 
     Public SystemVer As String 
     Public System_Ver As String 
     Public BiosVen As String 

     Public Sub New() 
      SerialNumber = "" 
      ModelName = "" 
      SystemVer = "" 
      System_Ver = "" 
      BiosVen = "" 
     End Sub 
    End Class 

    Public Shared Property computersSettings() As New List(Of Settings) 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim newSettings As New Settings 
     computersSettings.Add(newSettings) 
     MessageBox.Show(computersSettings(0).BiosVen) 
     computersSettings(0).BiosVen = "my bios vendor" 
     Dim p As New otherclass 
     p.MySub() 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Form2.Show() 
    End Sub 
End Class 

Public Class otherclass 
    Public Sub MySub() 
     MessageBox.Show(Form1.computersSettings(0).BiosVen) 
    End Sub 
End Class 

gibi

Public Class Form2 
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     MessageBox.Show(Form1.computersSettings(0).BiosVen) 
    End Sub 
End Class 
İlgili konular