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 :

[Vb.net]_Héritage de classe sur formulaire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Par défaut [Vb.net]_Héritage de classe sur formulaire
    Bonjour,

    Dans mon application j'ai plusieurs formulaires qui contiennent les mêmes contrôles.

    J'ai donc créé un formulaire de base (Cf. pièce jointe), et puis j'ai créé des classes, héritant du formulaire de base, pour chaque nouveau formulaire.
    Classe de base
    Code Vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Imports System
     
    Public Class frmLstBase
     
    #Region "Déclaration des variables"
     
        Private clRecherche As New ClasseRecherche
        Private objDataSet As New DataSet
     
    #End Region
     
    ' ...
     
    End Class

    Classe d'un formulaire
    Code Vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Class frmLstVehicule
        Inherits frmLstBase
     
    ' ...
     
    End Class

    Mon soucis se situe sur la zone de recherche.
    Dans le formulaire de base voici la code du bouton Rechercher:
    Code Vb.net : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub cmdRechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRechercher.Click
     
            Dim strFiltre As String = Nothing
     
            ' Recherche avec les TextBox
            ' > Recherche avec une Textbox
            If Me.txtRecherche1.Visible = True And Me.txtRecherche2.Visible = False Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, Me.txtRecherche1.Text)
            End If
     
            ' > Recherche avec les deux Textbox
            If Me.txtRecherche1.Visible = True And Me.txtRecherche2.Visible = True Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, Me.txtRecherche1.Text, Me.txtRecherche2.Text)
            End If
     
            ' Recherche avec les DateTimerPicker
            ' > Convertir les dates Chaînes de caractères en numérique
            Dim dtDtmpRecherche1 As New Date
            dtDtmpRecherche1 = Me.dtmpRecherche1.Text
            Dim dtDtmpRecherche2 As New Date
            dtDtmpRecherche2 = Me.dtmpRecherche2.Text
     
            ' > Recherche avec un DateTimerPicker
            If Me.dtmpRecherche1.Visible = True And Me.dtmpRecherche2.Visible = False Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, dtDtmpRecherche1.ToShortDateString)
            End If
     
            ' > Recherche avec les deux DateTimerPicker
            If Me.dtmpRecherche1.Visible = True And Me.dtmpRecherche2.Visible = True Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, dtDtmpRecherche1.ToShortDateString, dtDtmpRecherche2.ToShortDateString)
            End If
     
            Dim strTrie As String
            strTrie = "[" & Me.cboRechercherDans.Text & "] ASC"
     
            Me.dgvBase.DataSource = clVehicule.TrierChargerTs(objDataSet, strFiltre, strTrie)
     
        End Sub

    Ce que j'aimerais faire.
    Le code, jusqu'à Me.dgvBase.DataSource = clVehicule.TrierChargerTs(objDataSet, strFiltre, strTrie), est générique et doit rester dans le formulaire de base. Mais comment faire pour que dans chaque classe je puisses obtenir Me.dgvBase.DataSource = clVehicule.TrierChargerTs(objDataSet, strFiltre, strTrie)

    Merci du coup de main.

    Gwendal
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Par défaut
    Salut,

    Tu pourrais te faire une propriété pour accéder à tes variables

    EX :
    dans ta classe principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public readonly property objDataSet()
    Get
      return objDataSet
    End Get
    End property
    dans ta classe hérité
    Voilà

    a+

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Par défaut
    re,

    Merci, mais je ne veux pas accèder à un dataset.

    J'ai un premier formulaire FormA qui va me servir de moule (Cf. pièce jointe) à d'autres formulaires.
    J'ai donc d'autres formulaires FormB, FormC, FormD, ... héritant du formulaire FormA.
    Ainsi je n'ai pas besoin de coder dix fois le bouton fermer (par exemple)....

    J'ai une zone de recherche qui permet de trier le DataGridView du formulaire.

    Mon soucis:
    Une partie du code cmdRechercher_Click est générique aux formulaires héritant sauf la fin. Je souhaiterais donc pouvoir avoir cette partie du code dans le formulaire de base FormA.
    Code Vb.net : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
            Dim strFiltre As String = Nothing
     
            ' Recherche avec les TextBox
            ' > Recherche avec une Textbox
            If Me.txtRecherche1.Visible = True And Me.txtRecherche2.Visible = False Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, Me.txtRecherche1.Text)
            End If
     
            ' > Recherche avec les deux Textbox
            If Me.txtRecherche1.Visible = True And Me.txtRecherche2.Visible = True Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, Me.txtRecherche1.Text, Me.txtRecherche2.Text)
            End If
     
            ' Recherche avec les DateTimerPicker
            ' > Convertir les dates Chaînes de caractères en numérique
            Dim dtDtmpRecherche1 As New Date
            dtDtmpRecherche1 = Me.dtmpRecherche1.Text
            Dim dtDtmpRecherche2 As New Date
            dtDtmpRecherche2 = Me.dtmpRecherche2.Text
     
            ' > Recherche avec un DateTimerPicker
            If Me.dtmpRecherche1.Visible = True And Me.dtmpRecherche2.Visible = False Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, dtDtmpRecherche1.ToShortDateString)
            End If
     
            ' > Recherche avec les deux DateTimerPicker
            If Me.dtmpRecherche1.Visible = True And Me.dtmpRecherche2.Visible = True Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, dtDtmpRecherche1.ToShortDateString, dtDtmpRecherche2.ToShortDateString)
            End If
     
            Dim strTrie As String
            strTrie = "[" & Me.cboRechercherDans.Text & "] ASC"

    Et celle-ci dans les autres formulaires (FormB, FormC, ...).
    Code Vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Me.dgvBase.DataSource = clVehicule.TrierChargerTs(objDataSet, strFiltre, strTrie)

    Ainsi si je dois modifier le code construisant le filtre de recherche, je n'aurais pas à le modifier dans tous les formulaires....

    Merci.

    Gwendal

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 291
    Par défaut
    re,

    J'ai trouvé...
    J'ai créé 2 fonctions dans le formulaire de base:
    Code Vb.net : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     Protected Function fctRechStrFiltre()
     
            Dim strFiltre As String = Nothing
     
            ' Recherche avec les TextBox
            ' > Recherche avec une Textbox
            If Me.txtRecherche1.Visible = True And Me.txtRecherche2.Visible = False Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, Me.txtRecherche1.Text)
            End If
     
            ' > Recherche avec les deux Textbox
            If Me.txtRecherche1.Visible = True And Me.txtRecherche2.Visible = True Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, Me.txtRecherche1.Text, Me.txtRecherche2.Text)
            End If
     
            ' Recherche avec les DateTimerPicker
            ' > Convertir les dates Chaînes de caractères en numérique
            Dim dtDtmpRecherche1 As New Date
            dtDtmpRecherche1 = Me.dtmpRecherche1.Text
            Dim dtDtmpRecherche2 As New Date
            dtDtmpRecherche2 = Me.dtmpRecherche2.Text
     
            ' > Recherche avec un DateTimerPicker
            If Me.dtmpRecherche1.Visible = True And Me.dtmpRecherche2.Visible = False Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, dtDtmpRecherche1.ToShortDateString)
            End If
     
            ' > Recherche avec les deux DateTimerPicker
            If Me.dtmpRecherche1.Visible = True And Me.dtmpRecherche2.Visible = True Then
                strFiltre = clRecherche.Filtre(Me.cboCritere.Text, Me.cboRechercherDans.Text, dtDtmpRecherche1.ToShortDateString, dtDtmpRecherche2.ToShortDateString)
            End If
     
            Return strFiltre
     
        End Function

    Code Vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Protected Function fctRechStrTrie()
     
            Dim strTrie As String
            strTrie = "[" & Me.cboRechercherDans.Text & "] ASC"
     
            Return strTrie
     
        End Function

    Puis dans les autres formulaires:
    Code Vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub cmdRechercher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRechercher.Click
     
            Me.dgvBase.DataSource = clVehicule.TrierChargerTs(objDataSet, fctRechStrFiltre, fctRechStrTrie)
     
        End Sub

    Voilli voilou



    Gwendal

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

Discussions similaires

  1. Plusieurs classes sur un même formulaire ?
    Par Odawin dans le forum Spring
    Réponses: 0
    Dernier message: 14/02/2014, 09h47
  2. [VB.NET] Dupliquer un bouton sur un formulaire
    Par markito dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/07/2006, 14h08
  3. [VB.NET] [PPC] Comment faire un formulaire sur pls pages?
    Par papy27 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 03/06/2004, 17h23
  4. [VB.Net] Faire du JS sur des contrôles côté serveur
    Par TagadaTsoin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/11/2003, 15h51

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