Plusieur objet dans une meme class

XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 16 déc. 2006 à 15:34
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 19 déc. 2006 à 15:05
Bonjour, voici mon code:

Imports Microsoft.Office.Interop.excel

Public Class TextBoxValidator
    Inherits System.Windows.Forms.TextBox

    Private mValidtion As Validation

    Public Property Validation() As Validation
        Get
            Return mValidtion
        End Get
        Set(ByVal Value As Validation)
            mValidtion = Value
        End Set
    End Property

End Class

Public Class ComboBoxValidator
    Inherits System.Windows.Forms.ComboBox

    Private mValidtion As Validation

    Public Property Validation() As Validation
        Get
            Return mValidtion
        End Get
        Set(ByVal Value As Validation)
            mValidtion = Value
        End Set
    End Property

End Class

Public Class DateTimePickerValidator
    Inherits System.Windows.Forms.DateTimePicker

    Private mValidtion As Validation

    Public Property Validation() As Validation
        Get
            Return mValidtion
        End Get
        Set(ByVal Value As Validation)
            mValidtion = Value
        End Set
    End Property

End Class

Il fait ce que j'ai besoin mais je trouve que ce code est tres répétitif......
Ya t'il un moyen de les mettes toute les trois dans une seul class?
Genr eque dans le Sub New je donne en parametre le type que je désire ...
Merci d'avance =:0)

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 déc. 2006 à 15:44
Cela s'appelle de l'héritage : une classe mère qui est abstraite (qu'on ne peux pas instancier), et des classes filles qui en hérite tout leur code.

Après, comme faire cà en vb.net, cà je ne pourrais pas te dire : je ne fait que du vb6
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
16 déc. 2006 à 15:54
Anyway, ya de quoi que j'ai pas fait de corecte lol
J'ai fait
dim x as new TextBoxValidator
et ya pas x.validation dans les option lol.
Je me demane pourquoi...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 déc. 2006 à 18:09
Salut

Je te propose

Public Class ControlValidator
    Inherits System.Windows.Forms.Controls

    Private mValidtion As Validation

    Public Property Validation() As Validation
        Get
            Return mValidtion
        End Get
        Set(ByVal Value As Validation)
            mValidtion = Value
        End Set
    End Property

End Class

Control est l'ancetre de tous tes composants winforms
Et il ne reste plus qu'une seule classe
Que tu peux derivé comme tu le fais si tu veux un traitement special pour tes combobox par exemple.

Bon Courage
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
17 déc. 2006 à 01:01
Ces justement ce que j'ai fait juste avant que tu poste ce code. sur cette partie sa marche tres bien maintenant. Cepandant sa me cause des probleme plus tard... J'esplique...
J'ajoute ces controles sur ma forme apres. Grace au code ci dessous. Il y a 3 type de varible de controle de retour posible:
textbox,combobox, datepicker. Mais une fois que mon controle est fait , je ne peu plus faire de conversion. Genre normalement je peu transformer de type textbox vers controle... mais je ne peu pas transferer de type textbox vers ControlValidator. Merci de m'aider =:0)

    Private Function GetControl(ByVal cell As String, ByVal validation As Excel.Validation) As Control
        Static index As Integer = 0
        Dim mycontrol As New ControlValidator

        Try
            Select Case validation.Type

                Case xlValidateList
                    Dim text As New ComboBox
                    text.Items.AddRange(validation.Formula1.Split(";".ToCharArray))
                    text.Text = text.Items(0).ToString
                    'Error    1    Value of type 'System.Windows.Forms.ComboBox' cannot be converted to 'ExcelConnection.ControlValidator'.
                    mycontrol = text

                Case xlValidateDate
                    Dim time As New DateTimePicker
                    'Error    2    Value of type 'System.Windows.Forms.DateTimePicker' cannot be converted to 'ExcelConnection.ControlValidator'.
                    mycontrol = time

                Case Else
                    Dim text As New TextBox
                    'Error    3    Value of type 'System.Windows.Forms.TextBox' cannot be converted to 'ExcelConnection.ControlValidator'.
                    mycontrol = text

            End Select

        Catch Er As Exception

            If Err.Number = 1004 Then
                Dim text As New TextBox
                'Error    3    Value of type 'System.Windows.Forms.TextBox' cannot be converted to 'ExcelConnection.ControlValidator'.
                mycontrol = text
                Err.Clear()
            Else
                MsgBox(Er.InnerException)
            End If

        End Try

        mycontrol.Validation = validation
        mycontrol.ValidationCell = cell
        mycontrol.AutoSize = True
        mycontrol.Location = New System.Drawing.Point(0, 0)
        mycontrol.Name = "lblinfo" & index.ToString
        mycontrol.Size = New System.Drawing.Size(80, 20)
        mycontrol.Dock = DockStyle.Fill
        AddHandler mycontrol.Validating, AddressOf TextValidating
        index = index + 1

        Return mycontrol

    End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 déc. 2006 à 12:41
Salut

Je pense que tu t'y prends mal, j'ai un peu de mal a comprenderte ce que tu veux.

Mais je vais tenté une réponse.

Private Function GetControl(ByVal cell As String, ByVal validation As Excel.Validation, controltovalidate as control )  As Control
        Static index As Integer = 0
        Dim mycontrol As New ControlValidator

        Try
            Select Case gettype(controltovalide)

                Case xlValidateList
                   
                    controltovalidate.Items.AddRange(validation.Formula1.Split(";".ToCharArray))
                    controltovalidate.Text = controltovalidate.Items(0).ToString
                   

                Case xlValidateDate
                     

                Case Else
                   
            End Select

......
return controltovalidate

voila

Il y a peut être pas besoin de passer un autre argument mais je ne connais pas ton programme (de plus je ne connais pas les classes excel)

Mais l'essentiel, c'est qu'il ne faut pas travailler sur une nouvelle instance de ta classe
mais sur l'instance en cours.

Ce qui te permettra de renvoyer un control (celui qui rentre)
Mais je ne vois pas trop le but de ton programme donc je ne peux guere t'avancer plus

Voila
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
19 déc. 2006 à 15:05
Na sa peu pas amrcher sa =:0( Si sa te dit je peu te montrer la source complet tu vavoir sé quoi l'utilité lol. ta qua me donner ton email pi je vais tenvoyer sa
0
Rejoignez-nous