IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Fonction qui renvoie un objet?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut Fonction qui renvoie un objet?
    Bonsoir,

    Je cherche à faire une fonction qui sert à renvoyer l'objet selectionné par un radiobutton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Private Function SelectedTire() As Object
            If Tire_LF_radbut.Checked = True Then
                Return Tire_LF
     
            ElseIf Tire_RF_radbut.Checked = True Then
                Return Tire_RF
     
            ElseIf Tire_LR_radbut.Checked = True Then
                Return Tire_LR
     
            ElseIf Tire_RR_radbut.Checked = True Then
                Return Tire_RR
            End If
        End Function
    J'ai ce warning:
    Warning 1 Function 'SelectedTire' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. E:\YMD - 09.20\YMD\SetupForm.vb 320 5 YMD
    Après je voudrais faire quelque chose comme çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetupForm.pCx1_tbox.Text = SelectedTire.pCx1.value
    Avec pCx1 une propriété de l'instance SelectedTire, issue de la fonction...

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Function SelectedTire() As Tire
            If Tire_LF_radbut.Checked = True Then
                Return Tire_LF
     
            ElseIf Tire_RF_radbut.Checked = True Then
                Return Tire_RF
     
            ElseIf Tire_LR_radbut.Checked = True Then
                Return Tire_LR
     
            Else Tire_RR_radbut.Checked = True Then
                Return Tire_RR
            End If
        End Function

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Function SelectedTire() As CheckBox
            If Tire_LF_radbut.Checked = True Then
                Return Tire_LF
     
            ElseIf Tire_RF_radbut.Checked = True Then
                Return Tire_RF
     
            ElseIf Tire_LR_radbut.Checked = True Then
                Return Tire_LR
     
            ElseIf Tire_RR_radbut.Checked = True Then
                Return Tire_RR
            Else 
                Throw New ApplicationException("checkbox non géré") ' ou Return Nothing
            End If
        End Function
    j'aurais plutot dit ca

    as object si tu retourne un checkbox autant mettre as checkbox (sinon il suffit de caster le retour de la fonction sur checkbox)

    et pour le "ne retourne pas une valeur sur tous les chemin" c'est qu'avec ton code de départ, si aucun des elseif est vrai tu te retrouves en fin de fonction sans avoir fait un return
    il faut alors choisir (via le else ou alors après le end if) quoi faire, déclencher une erreur ou retourner nothing

    si tu as plein de checkbox tu peux aussi faire quelque chose de plus générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (from c as checkbox in me.controls.oftype(of checkbox) where c.checked = true select c).firstordefault
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Function SelectedTire() As TireClass
            If Tire_LF_radbut.Checked = True Then
                Return Tire_LF
     
            ElseIf Tire_RF_radbut.Checked = True Then
                Return Tire_RF
     
            ElseIf Tire_LR_radbut.Checked = True Then
                Return Tire_LR
     
            Else
                Return Tire_RR
            End If
        End Function
    Merci!

    A la différence de TireClasse, Object ne supporte que les classes d'origines et pas celles que je crée, c'est çà?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    tout les objets que tu crées sont dérivé Objet

    Part contre si tu retourne un Objet , tu n'as access qu'au méthodes de la class Objet (tu dois effectuer un cast)

    donc pour ne pas caster l'objet en TireClasse , tu dis que ta fonction retourne un TireClasse

    sinon la méthode de Pol63 est plus jolie

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    tout les objets que tu crées sont dérivé Objet

    Part contre si tu retourne un Objet , tu n'as access qu'au méthodes de la class Objet (tu dois effectuer un cast)

    donc pour ne pas caster l'objet en TireClasse , tu dis que ta fonction retourne un TireClasse

    sinon la méthode de Pol63 est plus jolie
    OK!

    Oui j'essaierai la methode de Pol.

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    Bonjour Pol,

    Non ce n'est pas pour créer une check box.


    En fait, je crée 4 pneu avec des propriétés par défaut.
    Un pneu à plus de 100 propriétés.
    J'ai 4 radiobutton : pneu avant-droit, avant-gauche...et 100textbox pour les propriété.

    un bind comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim Tire_LF As New TireClass
        Dim Tire_RF As New TireClass
        Dim Tire_LR As New TireClass
        Dim Tire_RR As New TireClass
        Private Sub CreatesFourDefaultTires()
     
            Call Tire_LF.TireBinding(Tire_LF)
    ....
     
    Public Sub TireBinding(ByVal Tire_xx As TireClass)
     
    'Pure Longitudinal
            Dim PCx1 As New Binding("Text", Tire_xx, "PCx1", True, DataSourceUpdateMode.OnValidation, 0)
            PCx1.ControlUpdateMode = ControlUpdateMode.Never
            SetupForm.pCx1_tbox.DataBindings.Add(PCx1)
    end sub
    Les textboxs sont remplis par defaut.Je voudrais que pour chaque radiobutton on retrouve les propriétés du pneu sélectionné.

    D'où quelque chose comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetupForm.pCx1_tbox.Text = SelectedTire.pCx1.value

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Citation Envoyé par Gualino Voir le message
    Non ce n'est pas pour créer une check box.
    là n'est pas la question, mon code est une explication générique
    et j'avais pas fait gaffe que tu parlais de radiobutton (pourtant avec les elseif ca parrait évident)
    enfin suffit de remplacer checkbox par radiobutton et la fonction retournera la radiobutton qui est checked

    Citation Envoyé par Gualino Voir le message
    100 textbox
    s'il y a 100 textbox à l'écran ca peut vouloir dire que l'interface est mal conçue ...
    et je ne suis pas expert en binding windows forms donc je ne pourrais guère t'aider plus là dessus
    enfin à vu de nez si tu veux pouvoir accéder à ton binding, il faut le déclarer au même endroit que tes 4 pneus (et tu peux les initialiser dans ta méthode quand même)
    et si tu as 100 bindings, mets les dans une collection genre un dictionary(of tireclasse, dictionary(of string, binding))
    tireclass => nom propriété => binding associé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Par défaut
    Ces 100 textbox sont réparti sur plusieurs tab...

    Pour le dictionnaire, j'y ai pensé, mais on m'a dit que c'était compliqué.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction qui renvoie un un objet d'une autre classe
    Par miloon dans le forum Débuter
    Réponses: 3
    Dernier message: 16/02/2009, 20h45
  2. [POO] fonction qui renvoie 1 objet
    Par tigrou2405 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/08/2007, 17h59
  3. fonction qui renvoi un objet Parameter
    Par robocop2776 dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/08/2007, 23h33
  4. function qui renvois un objet ?
    Par mattmat dans le forum ASP
    Réponses: 4
    Dernier message: 23/04/2004, 11h35
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo