Class [Résolu]

Signaler
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
-
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
-
bonjour,

Je m'oriente sur la création de class,
c'est ma première class et j'avoue que je suis un peut perdu,

j'aimerai créer un tableau ou plutot une listbox qui aparament est impossible voici mon code:
Option Explicit On
Imports System.Management
Imports System.IO
Imports System.Text

Public Class ClassProtecSoft
#Region "Private var"

    Private cls_Key As String
#End Region

#Region "Property"
    Public Property Key() As String
        Get
            Return cls_Key
        End Get
        Set(ByVal Key As String)
            cls_Key = Key
        End Set
    End Property

    
#End Region
    Public Sub New()

    End Sub

    Public Sub New(ByVal Key As String)
        Me.Key = Key
    End Sub
    Public Overloads Function GenerateMac() As String
        Dim AdressMac As String
        Dim mc As New System.Management.ManagementClass
        Dim mo As ManagementObject
        mc = New ManagementClass("Win32_NetworkAdapterConfiguration")
        Dim moc As ManagementObjectCollection = mc.GetInstances()

        For Each mo In moc
            If mo.Item("IPEnabled") = True Then
               
                LstBoxAdresseMac.Items.Add(mo.Item("MacAddress").ToString())
            End If
        Next
        Return AdressMac.ToString

    End Function
End Class


le problème c'est que je ne peux pas faire
dim LstBoxAdresseMac as new listbox
.
j'ai regarder ic mais à aucun moment il ont besoin de créer tableau.

Quelque serais me dire la marche a suivre ou une doc plus pousser car comme je vous les dits je suis partis hier en vacance et je n'ai pas pris mes bouquin de vb je suis deg...

7 réponses

Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Bonjour,

Si le but est de générer une adresse mac lors de la création d'un objet ClassProtectSoft, dans ce cas il faut bien l'initialiser dans le new.

Si vous voulez pouvoir réutiliser votre fonction GenerateMac en dehors de la class il faudra faire comme ca :
Public Class ClassProtecSoft

#Region "Private var"
    Private cls_Key As String
#End Region

#Region "Property"
    Public Property AdressMac() As String
        Get
            Return cls_Key
        End Get
        Set(ByVal AdressMac As String)
            cls_Key = AdressMac
        End Set
    End Property
#End Region

    Public Sub New()
        Me.New(GenerateMac())
    End Sub

    Public Sub New(ByVal Key As String)
        cls_Key = Key
    End Sub

    Public Shared Function GenerateMac() As String

        Dim AdressMac As String
        Dim mc As New System.Management.ManagementClass
        Dim mo As ManagementObject
        mc = New ManagementClass("Win32_NetworkAdapterConfiguration")
        Dim moc As ManagementObjectCollection = mc.GetInstances()
        Dim MesAdresses As New ArrayList
        For Each mo In moc
            If mo.Item("IPEnabled") = True Then
                MesAdresses.Add(mo.Item("MacAddress"))
            End If
        Next
        AdressMac = MesAdresses.Item(1).ToString()

        Return AdressMac.ToString

    End Function

End Class


Comme ca vous pourrez vaire ce genre de chose :
Dim obj1 As New ClassProtecSoft()

'Ou
Dim newKey As String = ClassProtecSoft.GenerateMac()
Dim obj2 As New ClassProtecSoft(newKey)
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
7
bon j'ai reussi par contre comment appeler
GenerateMac()

dans le public sub new()
voici mon code.
Option Explicit On
Imports System.Management
Imports System.IO
Imports System.Text

Public Class ClassProtecSoft
#Region "Private var"

    Private cls_Key As String
#End Region

#Region "Property"
    Public Property Key() As String
        Get
            Return cls_Key
        End Get
        Set(ByVal Key As String)
            cls_Key = Key
        End Set
    End Property

    
#End Region
    Public Sub New()

    End Sub

    Public Sub New(ByVal Key As String)
        Me.Key = Key
    End Sub
    Public Overloads Function GenerateMac() As String
        Dim AdressMac As String
        Dim mc As New System.Management.ManagementClass
        Dim mo As ManagementObject
        mc = New ManagementClass("Win32_NetworkAdapterConfiguration")
        Dim moc As ManagementObjectCollection = mc.GetInstances()
        Dim MesAdresses As New ArrayList


        'Montableau = Array(Element1,Element2,Element3,...,Elementn) 


        For Each mo In moc
            If mo.Item("IPEnabled") = True Then
                'ListBox1.Items.Add("MAC address " & mo.Item("MacAddress").ToString())
                ' LstBoxAdresseMac.Items.Add(mo.Item("MacAddress").ToString())
                MesAdresses.Add(mo.Item("MacAddress"))
            End If
        Next
        AdressMac = MesAdresses.Item(1).ToString()
        Me.Key = AdressMac.ToString
        Return AdressMac.ToString

    End Function
End Class
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
Mais nul part dans ton code on vois où tu cherches à appeler GenerateMac() dans la sub New...et puis quelle erreur est générée?

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...
Visual Basic .Net is the best and vb6.0
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
7
en faite je voulais l'appeler depuis la form et sa ne fonctionne pas donc effectivement je l'appel maintenant dans le sub new .
J'aimerai que vous me dite si il y a un meilleur moyen d'utilisé la class?
Et il bien structuré?
Option Explicit On
Imports System.Management
Imports System.IO
Imports System.Text

Public Class ClassProtecSoft
#Region "Private var"

    Private cls_Key As String
#End Region

#Region "Property"
    Public Property AdressMac() As String
        Get
            Return cls_Key
        End Get
        Set(ByVal AdressMac As String)
            cls_Key = AdressMac
        End Set
    End Property

    
#End Region
    Public Sub New()
        GenerateMac()
    End Sub
    Public Sub GenerateMac()

        Dim AdressMac As String
        Dim mc As New System.Management.ManagementClass
        Dim mo As ManagementObject
        mc = New ManagementClass("Win32_NetworkAdapterConfiguration")
        Dim moc As ManagementObjectCollection = mc.GetInstances()
        Dim MesAdresses As New ArrayList
        For Each mo In moc
            If mo.Item("IPEnabled") = True Then
                MesAdresses.Add(mo.Item("MacAddress"))
            End If
        Next
        AdressMac = MesAdresses.Item(1).ToString()
        Me.AdressMac = AdressMac.ToString
    End Sub
End Class
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
7
j'ai supprimer Me.AdressMac = AdressMac.ToString
car je l'utilisé avant plus maintenant
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
7
j'ai du le remettre sinon il y avait une erreur
Me.AdressMac = AdressMac.ToString
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
11 janvier 2013
7
parfait merci et tu peux me tutoyer .