Probleme Visual Basic, changer de mode
Résolu
rj35
Messages postés
978
Statut
Membre
-
rj35 Messages postés 978 Statut Membre -
rj35 Messages postés 978 Statut Membre -
Bonjour, Je débute en Programmation...
Habitué à Java qui lit toutes les classes, Je suis surpris par Visual Basic qui ne lis pour un projet Fenetre, que la class Form de départ.
Est ce que je dois Changer de type d'application, j'ai essayé Console, mais pareil. Ne lis que la class main de départ.
J'aimerais simplement qu'il me lise toutes les autres classes et qu'il me lance MessageBox.Show présent dans les autres classes, je met un exemple:
Public Class Form1
Public Sub Form1()
End Sub
End Class
Public Class Voiture
Private marque As String
Private modele As String
Private anneeCircu As Integer
Private puissance As Integer
Private essence As Integer
Public Sub FairelePlein(ByVal essence As Integer)
Me.essence = Me.essence + essence
End Sub
Public Sub GonflerMoteur(ByVal cvgagnes As Integer)
Me.puissance = Me.puissance + cvgagnes
End Sub
End Class
Class Voiture2
Public anneeCirculation As Integer = 1987
End Class
Class Personne
Public Sub frauderVoiture(ByVal laVoiture As Voiture2)
laVoiture.anneeCirculation = laVoiture.anneeCirculation + 5
MessageBox.Show("Age : " + laVoiture.anneeCirculation)
End Sub
End Class
Class Voiture3
Private marque As String
Public Function GetMarque() As String
GetMarque = Me.marque
End Function
Public Sub setMarque(ByVal laMarque As String)
Me.marque = laMarque
End Sub
Private modele As String
Private anneeCircu As Integer
Public Function GetAnneeCircu() As Integer
If (Me.anneeCircu > 2012) Then
MessageBox.Show("Annee Impossible")
GetAnneeCircu = -1
End If
GetAnneeCircu = Me.anneeCircu
End Function
Public Sub setAnneeCircu(ByVal anCircu As Integer)
If (anCircu > 2012) Then
MessageBox.Show("Année Invalide")
Else
Me.anneeCircu = anCircu
End If
End Sub
Private puissance As Integer
Private essence As Integer
'Ne peut pas être modifier
End Class
Class Voiture4
Private _marque As String
Public Property Marque() As String
Get
Return Me._marque
End Get
Set(ByVal value As String)
Me._marque = value
End Set
End Property
Private _marque1 As String
Public ReadOnly Property Marque1() As String
Get
Return Me._marque1
End Get
End Property
Private _puissance As Integer
Public WriteOnly Property Puissance() As Integer
Set(ByVal value As Integer)
Me._puissance = value
End Set
End Property
End Class
Class Personne1
Public Sub frauderVoiture(ByVal laVoiture As Voiture2)
laVoiture.anneeCirculation = laVoiture.anneeCirculation + 5
MessageBox.Show("Age : " + laVoiture.anneeCirculation)
End Sub
Public Sub vendreVoiture(ByVal laVoiture As Voiture3)
Dim texteAnnonce As String
laVoiture.setAnneeCircu(2002)
laVoiture.setMarque("LaMarqueTropBien")
texteAnnonce = "Vends voiture" & laVoiture.GetMarque
texteAnnonce = texteAnnonce & "immatriculé en "
texteAnnonce = texteAnnonce & laVoiture.GetAnneeCircu()
MessageBox.Show(texteAnnonce)
End Sub
End Class
Que dois je faire Merci.
Habitué à Java qui lit toutes les classes, Je suis surpris par Visual Basic qui ne lis pour un projet Fenetre, que la class Form de départ.
Est ce que je dois Changer de type d'application, j'ai essayé Console, mais pareil. Ne lis que la class main de départ.
J'aimerais simplement qu'il me lise toutes les autres classes et qu'il me lance MessageBox.Show présent dans les autres classes, je met un exemple:
Public Class Form1
Public Sub Form1()
End Sub
End Class
Public Class Voiture
Private marque As String
Private modele As String
Private anneeCircu As Integer
Private puissance As Integer
Private essence As Integer
Public Sub FairelePlein(ByVal essence As Integer)
Me.essence = Me.essence + essence
End Sub
Public Sub GonflerMoteur(ByVal cvgagnes As Integer)
Me.puissance = Me.puissance + cvgagnes
End Sub
End Class
Class Voiture2
Public anneeCirculation As Integer = 1987
End Class
Class Personne
Public Sub frauderVoiture(ByVal laVoiture As Voiture2)
laVoiture.anneeCirculation = laVoiture.anneeCirculation + 5
MessageBox.Show("Age : " + laVoiture.anneeCirculation)
End Sub
End Class
Class Voiture3
Private marque As String
Public Function GetMarque() As String
GetMarque = Me.marque
End Function
Public Sub setMarque(ByVal laMarque As String)
Me.marque = laMarque
End Sub
Private modele As String
Private anneeCircu As Integer
Public Function GetAnneeCircu() As Integer
If (Me.anneeCircu > 2012) Then
MessageBox.Show("Annee Impossible")
GetAnneeCircu = -1
End If
GetAnneeCircu = Me.anneeCircu
End Function
Public Sub setAnneeCircu(ByVal anCircu As Integer)
If (anCircu > 2012) Then
MessageBox.Show("Année Invalide")
Else
Me.anneeCircu = anCircu
End If
End Sub
Private puissance As Integer
Private essence As Integer
'Ne peut pas être modifier
End Class
Class Voiture4
Private _marque As String
Public Property Marque() As String
Get
Return Me._marque
End Get
Set(ByVal value As String)
Me._marque = value
End Set
End Property
Private _marque1 As String
Public ReadOnly Property Marque1() As String
Get
Return Me._marque1
End Get
End Property
Private _puissance As Integer
Public WriteOnly Property Puissance() As Integer
Set(ByVal value As Integer)
Me._puissance = value
End Set
End Property
End Class
Class Personne1
Public Sub frauderVoiture(ByVal laVoiture As Voiture2)
laVoiture.anneeCirculation = laVoiture.anneeCirculation + 5
MessageBox.Show("Age : " + laVoiture.anneeCirculation)
End Sub
Public Sub vendreVoiture(ByVal laVoiture As Voiture3)
Dim texteAnnonce As String
laVoiture.setAnneeCircu(2002)
laVoiture.setMarque("LaMarqueTropBien")
texteAnnonce = "Vends voiture" & laVoiture.GetMarque
texteAnnonce = texteAnnonce & "immatriculé en "
texteAnnonce = texteAnnonce & laVoiture.GetAnneeCircu()
MessageBox.Show(texteAnnonce)
End Sub
End Class
Que dois je faire Merci.
A voir également:
- Probleme Visual Basic, changer de mode
- Changer dns - Guide
- Visual basic - Télécharger - Langages
- Mode avion - Guide
- Mode sécurisé samsung - Guide
- God mode - Guide
14 réponses
Bonjour,
Suggestion :
En supposant que ta classe Voiture se définit comme suit :
Et le code du bouton :
Ça devrait bien fonctionner :-)
Cdt
Lupin
Suggestion :
En supposant que ta classe Voiture se définit comme suit :
Public Class Voiture
#Region "--- Attributs ---"
Private mMarque As String
Private mModele As String
Private mAnneeCircu As Integer
Private mPuissance As Integer
Private mEssence As Integer
Private mNbrRoue As Integer
#End Region
#Region "--- Propriétés ---"
Public Property Marque() As String
Get
Return Me.mMarque
End Get
Set(ByVal value As String)
Me.mMarque = value
End Set
End Property
Public Property Modele() As String
Get
Return Me.mModele
End Get
Set(ByVal value As String)
Me.mModele = value
End Set
End Property
Public Property AnneeCirculation() As Integer
Get
Return Me.mAnneeCircu
End Get
Set(ByVal value As Integer)
Me.mAnneeCircu = value
End Set
End Property
Public Property Puissance() As Integer
Get
Return Me.mPuissance
End Get
Set(ByVal value As Integer)
Me.mPuissance = value
End Set
End Property
Public Property Essence() As Integer
Get
Return Me.mEssence
End Get
Set(ByVal value As Integer)
Me.mEssence = value
End Set
End Property
Public Property NbrRoue() As Integer
Get
Return Me.mNbrRoue
End Get
Set(ByVal value As Integer)
Me.mNbrRoue = value
End Set
End Property
#End Region
#Region "--- Méthodes ---"
''' <summary>
''' Constructeur par défaut
''' </summary>
''' <remarks></remarks>
Public Sub New()
End Sub
Public Sub FairelePlein(ByVal pEssence As Integer)
Me.mEssence += pEssence
End Sub
Public Sub GonflerMoteur(ByVal cvgagnes As Integer)
Me.mPuissance += cvgagnes
End Sub
Public Sub FrauderVoiture()
Me.mAnneeCircu += 5
MessageBox.Show(String.Concat("Age : ", Me.mAnneeCircu.ToString))
End Sub
Public Sub VendreVoiture()
Dim texteAnnonce As New System.Text.StringBuilder
texteAnnonce.Append(String.Concat("Vends voiture ", Me.mMarque))
texteAnnonce.Append(String.Format("{0}{1}{2}", " ", Me.mModele, " "))
texteAnnonce.Append(" immatriculé en ")
texteAnnonce.AppendLine(Me.mAnneeCircu.ToString)
MessageBox.Show(texteAnnonce.ToString)
End Sub
#End Region
End Class
Et le code du bouton :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Voiture1 As Voiture = New Voiture Voiture1.AnneeCirculation = 1987 Voiture1.Marque = "Toyota" Voiture1.Modele = "Corolla" Voiture1.Puissance = 120 Voiture1.Essence = 30 Voiture1.VendreVoiture() End Sub
Ça devrait bien fonctionner :-)
Cdt
Lupin
Bonjour,
Je n'ai pas examiné tout ton code mais il semble que tu n'ai pas saisi le principe, tu peu très bien lancer ce que tu veux à partir de la "Forme de départ" qui n'est en fait que le point d'entrée.
Exemple :
Pour initialiser les variables le mieux serait de créer le design de Form1 avec des contrôles qui te permette de sélectionner ce que tu veux.
Quand une sélection est faite tu peu lancer la Form2
Mais ça ne supporte pas de paramètre
Pour communiquer entre formes tu dois mettre un module général .bas avec des variable Public.
Voir quelque tuto pour comprendre la structure
Encore un mais il y en a des miliers sur la toile.
Je n'ai pas examiné tout ton code mais il semble que tu n'ai pas saisi le principe, tu peu très bien lancer ce que tu veux à partir de la "Forme de départ" qui n'est en fait que le point d'entrée.
Exemple :
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'C'EST ICI QUE COMMENCE l'APPLI
'MAIS TU NE PEU PAS APPELER TES FONCTIONS IL FAUT D'ABORD INITIALISER LES VARIABES
End Sub
End Class
Pour initialiser les variables le mieux serait de créer le design de Form1 avec des contrôles qui te permette de sélectionner ce que tu veux.
Quand une sélection est faite tu peu lancer la Form2
MessageBox.Show
Mais ça ne supporte pas de paramètre
Pour communiquer entre formes tu dois mettre un module général .bas avec des variable Public.
Voir quelque tuto pour comprendre la structure
Encore un mais il y en a des miliers sur la toile.
Un Module c'est aussi une classe mais qui est visible dans toute l'appli, sauf stipulation contraire, tout ce qui y est est public, les fonctions, les sub, les variables etc..
Dans l'IDE -> Projet -> ajouter une classe -> Module
Dans l'IDE -> Projet -> ajouter une classe -> Module
Merci Bcp, cependant je viens de voir que le problème réapparait...
,Je n'arrive pas a crée des accesseurs Partagés à partir d'un Me.nom , J'ai le droit a: impossible de faire référence a un membre d'une instance d'une classe a partir d'une méthode partagé
Et quand je l'enleve le partage (Shared) Une référence a un membre non partagé requiert une référence Objet...
Je suis perdu, le livre a du sauté des étapes car elle ne donne qu'une partie du programme en plus des erreurs d'écriture.
,Je n'arrive pas a crée des accesseurs Partagés à partir d'un Me.nom , J'ai le droit a: impossible de faire référence a un membre d'une instance d'une classe a partir d'une méthode partagé
Et quand je l'enleve le partage (Shared) Une référence a un membre non partagé requiert une référence Objet...
Je suis perdu, le livre a du sauté des étapes car elle ne donne qu'une partie du programme en plus des erreurs d'écriture.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok, merci de la réponse. J'ai crée un nouveau bouton, je lui est mis tout ce qu'il lui faut pour qu'il affiche le message. Il m'a bien renvoyé le message que je cherchait grâce a MessageBox.Show. Je croyais que ca ne marcherais pas.
Je suis débutant en Visual, ce qui fait que j'ai un peu de mal a comprendre le concept d'une fenêtre de départ. Je dois trop être habitué a Java.
Grace a toi j'ai compris que Visual Sudio et Java n'ont rien a voir.
Le problème avec le livre que j'ai acheté pour apprendre la programmation, c'est qu'ils ne définissent pas tout et font des erreurs. Si bien que je suis obligé de les corrigés en cherchant sur Internet.
J'ai entendu parler de Module, mais j ai un peu de mal a voir la différence avec une classe.
Merci Bcp.
Je suis débutant en Visual, ce qui fait que j'ai un peu de mal a comprendre le concept d'une fenêtre de départ. Je dois trop être habitué a Java.
Grace a toi j'ai compris que Visual Sudio et Java n'ont rien a voir.
Le problème avec le livre que j'ai acheté pour apprendre la programmation, c'est qu'ils ne définissent pas tout et font des erreurs. Si bien que je suis obligé de les corrigés en cherchant sur Internet.
J'ai entendu parler de Module, mais j ai un peu de mal a voir la différence avec une classe.
Merci Bcp.
Voila Mon appli
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show("Une voiture a " & Voiture.nbreroue & " roues.")
Dim voiture1 As New Voiture()
Dim voiture2 As New Voiture()
Dim voiture3 As New Voiture()
MessageBox.Show("Nbre de roues de la voiture 1 = " & Voiture.nbreroue & " roues.")
MessageBox.Show("Nbre de roues de la voiture 2 = " & Voiture.nbreroue & " roues.")
MessageBox.Show("Nbre de roues de la voiture 3 = " & Voiture.nbreroue & " roues.")
End Sub
End Class
Public Class Voiture
Public Shared nbreroue As Integer = 4
Public Sub Lol()
MessageBox.Show("Une voiture a " & Voiture.nbreroue & " roues.")
End Sub
End Class
Merci deja d'avoir retravaillé tout le programme. Je garde Ca précieusement.
Si je me trompe pas Donc (j'aime bien tout comprendre Mm si je débute) tu a utiliser des accesseurs (Getteurs et setteurs) pour que les variables de bases soient Récupérer et Défini (Partagé). Puis tu as utilisé des méthodes pour modifier les valeurs (frauder) ou les afficher (VendreVoiture)
Puis lorsque l'on clique sur Le bouton On instancie Une nouvelle voiture avec des paramètres et on affiche L'annonce.
C'est PARFAIT, je l'ai testé et il marche. Ca m'a énervé en ne voyant aucune aide concernant les boutons et en essayant de comprendre sa logique (auteur du livre) qui n'est pas très clair. Mais la c'est très clair (enfin si j'ai bien compris) et surtout complet.
J'ai aussi réalisé un autre programme, l'auteur note "Liez maintenant cette méthode au bouton Sauvegarder"
J'ai recherché sur internet comment lier. Je suis tomber sur le mm programme que je devais faire, soit une personne qui avait le même livre et le même problème.
Donc, c'est grâce a toi, à la communauté qu'on arrive a avancer face aux erreurs qui sont grotesques. Le livre n'est pas mauvais mais pour une 4eme edition, c'est anormal...
En tout cas tu as la capacité de faire des cours (c'est peut être deja le cas), car Tout est propre; bien séparer, on voit le programme qui se lance sous nos Yeux.
Merci encore et encore. Je remercie aussi lermite222 qui m'a permis d'anticiper l'apprentissage des modules et comprendre le fonctionnement de VB.
Thanks ;)
Si je me trompe pas Donc (j'aime bien tout comprendre Mm si je débute) tu a utiliser des accesseurs (Getteurs et setteurs) pour que les variables de bases soient Récupérer et Défini (Partagé). Puis tu as utilisé des méthodes pour modifier les valeurs (frauder) ou les afficher (VendreVoiture)
Puis lorsque l'on clique sur Le bouton On instancie Une nouvelle voiture avec des paramètres et on affiche L'annonce.
C'est PARFAIT, je l'ai testé et il marche. Ca m'a énervé en ne voyant aucune aide concernant les boutons et en essayant de comprendre sa logique (auteur du livre) qui n'est pas très clair. Mais la c'est très clair (enfin si j'ai bien compris) et surtout complet.
J'ai aussi réalisé un autre programme, l'auteur note "Liez maintenant cette méthode au bouton Sauvegarder"
J'ai recherché sur internet comment lier. Je suis tomber sur le mm programme que je devais faire, soit une personne qui avait le même livre et le même problème.
Donc, c'est grâce a toi, à la communauté qu'on arrive a avancer face aux erreurs qui sont grotesques. Le livre n'est pas mauvais mais pour une 4eme edition, c'est anormal...
En tout cas tu as la capacité de faire des cours (c'est peut être deja le cas), car Tout est propre; bien séparer, on voit le programme qui se lance sous nos Yeux.
Merci encore et encore. Je remercie aussi lermite222 qui m'a permis d'anticiper l'apprentissage des modules et comprendre le fonctionnement de VB.
Thanks ;)
J'ai encore un nouveau problème. Cette fois ci c'est au niveau de la serialisation. Le fichier est bien crée mais je n'ai que les Integer qui sont egals a 0...
Voici le code
Voici le code
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO
Imports System.Xml.Serialization
Public Class Form1
Private Function XMLSerialize(ByVal monLivre As Livre) As Boolean
If monLivre Is Nothing Then Return False
Dim stream2 As New StreamWriter("C:\Aide\Product.xml")
Dim serializer As New XmlSerializer(GetType(Livre))
serializer.Serialize(stream2, monLivre)
stream2.Close()
Return True
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim livre1 As New Livre()
If (XMLSerialize(livre1) = True) Then
'tout c'est bien passé
Else
MessageBox.Show("erreur")
End If
End Sub
End Class
'Class Livre
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO
Imports System.Xml.Serialization
<Serializable()> Public Class Livre
Private mTitre As String
Private mAuteur As String
Private mEditeur As String
Private mAnneeDeParution As Integer
Private mNbreDePages As Integer
Private mIsbn As Long
ReadOnly Property Titre() As String
Get
Return mTitre
End Get
'Set(ByVal value As String)
' mTitre = value
'End Set
End Property
ReadOnly Property Auteur() As String
Get
Return mAuteur
End Get
'Set(ByVal value As String)
' mAuteur = value
'End Set
End Property
ReadOnly Property Editeur() As String
Get
Return mEditeur
End Get
'Set(ByVal value As String)
' mEditeur = value
'End Set
End Property
Property AnneeDeParution() As Integer
Get
Return mAnneeDeParution
End Get
Set(ByVal value As Integer)
mAnneeDeParution = value
End Set
End Property
Property NbreDePages() As Integer
Get
Return mNbreDePages
End Get
Set(ByVal value As Integer)
mNbreDePages = value
End Set
End Property
Property Isbn() As Long
Get
Return mIsbn
End Get
Set(ByVal value As Long)
mIsbn = value
End Set
End Property
End Class
C bn j'ai reglé le probleme.
Pour ceux qui aurait le mm livre et que ca interesse :
Pour ceux qui aurait le mm livre et que ca interesse :
Imports System.IO
Imports System.Xml.Serialization
Module Module1
Public Class op
Public Shared Function XMLSerialize(ByVal monLivre As Livre) As Boolean
'La notion Shared permet le partage avec les autres Classe
'Si vous voulez vous pouvez rajouter un systeme de gestion de la reponse du Boolean Ex If False, "Show erreur".
If monLivre Is Nothing Then Return False
Dim stream2 As New StreamWriter("F:Product.xml")
"Le fichier va être crée les informations notés dans le Disque local F sous forme Xml.
Dim serializer As New XmlSerializer(GetType(Livre))
serializer.Serialize(stream2, monLivre)
stream2.Close()
Return True
End Function
End Class
End Module
Public Class Form1
Dim Livre1 As New Livre
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Conversion()
'Le bouton va lancer la class Conversion, On ne peut pas faire la conversion directement dans la classe du bouton!
End Sub
Public Sub Conversion()
Livre1.Titre = TextBox1.Text
Livre1.Auteur = TextBox2.Text
Livre1.Editeur = TextBox3.Text
Livre1.AnneeDeParution = TextBox4.Text
Livre1.NbreDePages = TextBox5.Text
Livre1.Isbn = TextBox6.Text
'Ici Les Le Livre1 Prend les paramètres que vous avez entrer dans les Textbox
Module1.op.XMLSerialize(Livre1)
'Puis on lance la function XMLSerialize avec comme paramètre Livre1 pour Sauver les attributs dans un fichier Xml.
End Sub
End Class
Public Class Livre
Private mTitre As String
Private mAuteur As String
Private mEditeur As String
Private mAnneeDeParution As Integer
Private mNbreDePages As Integer
Private mIsbn As Long
Property Titre() As String
Get
Titre = mTitre
End Get
Set(ByVal value As String)
mTitre = value
End Set
End Property
Property Auteur() As String
Get
Auteur = mAuteur
End Get
Set(ByVal value As String)
mAuteur = value
End Set
End Property
Property Editeur() As String
Get
Editeur = mEditeur
End Get
Set(ByVal value As String)
mEditeur = value
End Set
End Property
Property AnneeDeParution() As Integer
Get
AnneeDeParution = mAnneeDeParution
End Get
Set(ByVal value As Integer)
mAnneeDeParution = value
End Set
End Property
Property NbreDePages() As Integer
Get
NbreDePages = mNbreDePages
End Get
Set(ByVal value As Integer)
mNbreDePages = value
End Set
End Property
Property Isbn() As Long
Get
Isbn = mIsbn
End Get
Set(ByVal value As Long)
mIsbn = value
End Set
End Property
End Class
re:
Quelques commentaires ...
Chaque programmeur définit son style et il n'y as pas vraiment
de mauvaises façon de faire, néanmoins, il est plus facile habituellement
d'entretenir un programme si les règles de l'art sont toujours respectées.
Je veux dire par là de toujours créer ses objets de la même façon.
Lorsque tu créé un objet, exemple ta classe Livre : Public Class Livre
Place toujours un constructeur, même vide
Tu peux aussi créer une sucharge du New ainsi :
Tu pourras ainsi instancié ton objet avec des paramètres :
Private Livre1 As Livre = New Livre(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text)
Dans ta classe Op, dans la méthode je recommande de ne pas placer
plus d'un Return dans celle-ci, lorsque celle-ci deviendra complexe,
tu pourrais passer facilement à côté d'un problème si tu commence
à envoyer des [ Return ] un peu partout dans la méthode :
Sous .NET, je n'ai utlisé que très peu les modules, si tu veux
regrouper des classes utilise plutôt un [ NameSpace ] commun .
Tu peux aussi utliser les modules comme extension a tes classes.
l'appel se fait alors ainsi :
monLivre.Afficher
Cela demeure des suggestions et n'oblige à rien, tu prends ce qui te plait
et c'est tout.
Cdt
Lupin
Quelques commentaires ...
Chaque programmeur définit son style et il n'y as pas vraiment
de mauvaises façon de faire, néanmoins, il est plus facile habituellement
d'entretenir un programme si les règles de l'art sont toujours respectées.
Je veux dire par là de toujours créer ses objets de la même façon.
Lorsque tu créé un objet, exemple ta classe Livre : Public Class Livre
Place toujours un constructeur, même vide
''' <summary> ''' Constructeur par défaut ''' </summary> ''' <remarks></remarks> Public Sub New() End Sub
Tu peux aussi créer une sucharge du New ainsi :
''' <summary>
''' Constructeur par défaut
''' </summary>
''' <remarks></remarks>
Public Sub New()
End Sub
''' <summary>
''' Surcharge du constructeur
''' </summary>
''' <remarks></remarks>
Public Sub New(ByVal pTitre As String, _
ByVal pAuteur As String, _
ByVal pEditeur As String, _
ByVal pAnneeDeParution As Integer, _
ByVal pNbreDePages As Integer, _
ByVal pIsbn As Long)
Me.mTitre = pTitre
Me.mAuteur = pAuteur
Me.mEditeur = pEditeur
Me.mAnneeDeParution = pAnneeDeParution
Me.mNbreDePages = pNbreDePages
Me.mIsbn = pIsbn
End Sub
Tu pourras ainsi instancié ton objet avec des paramètres :
Private Livre1 As Livre = New Livre(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox6.Text)
Dans ta classe Op, dans la méthode je recommande de ne pas placer
plus d'un Return dans celle-ci, lorsque celle-ci deviendra complexe,
tu pourrais passer facilement à côté d'un problème si tu commence
à envoyer des [ Return ] un peu partout dans la méthode :
Public Class op
Public Shared Function XMLSerialize(ByVal monLivre As Livre) As Boolean
Dim Reponse As Boolean = False
If monLivre IsNot Nothing Then
Dim stream2 As New StreamWriter("F:Product.xml")
Dim serializer As New XmlSerializer(GetType(Livre))
serializer.Serialize(stream2, monLivre)
stream2.Close()
Reponse = True
End If
Return Reponse
End Function
End Class
Sous .NET, je n'ai utlisé que très peu les modules, si tu veux
regrouper des classes utilise plutôt un [ NameSpace ] commun .
Tu peux aussi utliser les modules comme extension a tes classes.
<Extension()> _ Public Module Module1 <Extension()> _ Public Sub Afficher(ByVal pLivre As Livre) Dim Chaine As New System.Text.StringBuilder Chaine.AppendLine(pLivre.Titre) Chaine.AppendLine(pLivre.Auteur) Chaine.AppendLine(pLivre.Editeur) Chaine.AppendLine(pLivre.AnneeDeParution.ToString) Chaine.AppendLine(pLivre.NbreDePages.ToString) Chaine.AppendLine(pLivre.Isbn.ToString) MessageBox.Show(Chaine.ToString) End Sub End Module
l'appel se fait alors ainsi :
monLivre.Afficher
Cela demeure des suggestions et n'oblige à rien, tu prends ce qui te plait
et c'est tout.
Cdt
Lupin
Il me reste des problèmes de compréhension concernant l'instanciation des Objets, Notamment les paramètres. Je pense que je dois davantage programmer pour comprendre les subtilité des paramètres. Pour les extensions, Je pense que mon livre doit aborder beaucoup plus tard ce point. J'ai utiliser ce que je sais, c'est a dire le partage de Classe, qui reste pour moi le plus simple.
Pour les renvoies return c'est très clair.
Ces suggestions sont très bonnes, j'accepte chaque remarque car je sais que je fais des erreurs en tant que débutant. Je dois encore acquérir de la rigueur...
Merci encore.
Pour les renvoies return c'est très clair.
Ces suggestions sont très bonnes, j'accepte chaque remarque car je sais que je fais des erreurs en tant que débutant. Je dois encore acquérir de la rigueur...
Merci encore.
re :
Voici un modele de base complet que tu pourras examiné :
https://www.cjoint.com/?BHqozsEEOxW
C'est une application utilisant une BD Access :-)
Cdt
Lupin
Voici un modele de base complet que tu pourras examiné :
https://www.cjoint.com/?BHqozsEEOxW
C'est une application utilisant une BD Access :-)
Cdt
Lupin
Je viens d'apprendre a mieux organsiner mes programmes. A bien séparé les différentes parties pour que le programme puisse être édité par d'autres personnes.
Ce programme que tu m'as transmit correspond a la hiérarchie qui m'a été imposé.
Ça me permet de mieux comprendre le fonctionnement et de confirmé la demande de bien séparé le programme en plusieurs Classe/Projet.
J'ai aussi Appris le fonction namespace/Imports. C'est bcp plus pratique
J'ai testé ton programme, Il marche sauf quand j'insèreune nouvelle Ligne, (j'ai une exception) . J'ai pas tout regardé mais je comprend un petit peu le fonctionnement majeur (sql, Namespace), Quand j'aurais fini mon livre j'essaierais de refaire ton Programme...
Merci
Ce programme que tu m'as transmit correspond a la hiérarchie qui m'a été imposé.
Ça me permet de mieux comprendre le fonctionnement et de confirmé la demande de bien séparé le programme en plusieurs Classe/Projet.
J'ai aussi Appris le fonction namespace/Imports. C'est bcp plus pratique
J'ai testé ton programme, Il marche sauf quand j'insèreune nouvelle Ligne, (j'ai une exception) . J'ai pas tout regardé mais je comprend un petit peu le fonctionnement majeur (sql, Namespace), Quand j'aurais fini mon livre j'essaierais de refaire ton Programme...
Merci
Ok c bon ca marche.
J'aurais besoin d'un dernier renseignement. Dans mon livre, on apprend a créer un fichier d'aide CHM, crée par NDOC. Je précise comme mm que mon Livre a edité en 2012... Ils n'ont pas actualisé le processus. De plus l'aide CHM et le logiciel Ndoc ne sont plus utilisés depuis la version 2005 de Visual Studio.
Que dois-je utilisé pour crée un fichier d'aide qui correspond aux usages d'aujourd'hui?
Merci encore pour tout.
J'aurais besoin d'un dernier renseignement. Dans mon livre, on apprend a créer un fichier d'aide CHM, crée par NDOC. Je précise comme mm que mon Livre a edité en 2012... Ils n'ont pas actualisé le processus. De plus l'aide CHM et le logiciel Ndoc ne sont plus utilisés depuis la version 2005 de Visual Studio.
Que dois-je utilisé pour crée un fichier d'aide qui correspond aux usages d'aujourd'hui?
Merci encore pour tout.
J'ai encore un petit problème... je cherche a créer un lecteur Audio avec directX. Mais une fois la valeur instancier, je ne peux modifier son état a partir d'autre Fonction.
Imports Microsoft.DirectX
Imports Microsoft.DirectX.AudioVideoPlayback
Public Class Form1
Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim PlayAudio As New Microsoft.DirectX.AudioVideoPlayback.Audio(OpenFileDialog1.FileName)
PlayAudio.Play()
'La musique que j'ai choisi est lancé.
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
Public Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Je cherche a modifier l'état de la musique pour la mettre sur pause mais je n'a arrive pas a accéder a PlayVideo.
End Sub
End Class