none
(Visual Studio 2008) Adressage indirect RRS feed

  • Question

  • Bonjour,

    Voici le code qui me permet de supprimer tous les items d'une ComboBox, et de les remplacer par d'autre

    cmbCouleur.Items.Clear()
    Dim wInd, wIndFin As Byte
    wIndFin = (cmbCouleur.Items.Count - 1)
    For wInd = 0 To wIndFin
          cmbCouleur.Items.Insert(wInd,MaVariable)
    Next

    Ceci marche très bien, mais je voudrais faire cela dans une procédure, en lui passant le contrôle

    Mais en faisant cela, je n'atteins pas toutes les propriétés du contrôle

    Je n'arrive pas à "rendre" la fonction :

    NomDuControl.Items.Clear()

    Ni la fonction

    NomDuControl.Items.Insert(…..

    Voici la procédure, du moins comme j'aimerai qu'elle soit

    Private Sub Traduction_Suite(ByVal wCtrl As Control)
    Dim wRetour, wInd, wIndFin As Integer
    If wCtrl IsNot Nothing Then
          wRetour = InStr(1, wCtrl.ToString, "ComboBox, Items.Count", CompareMethod.Text) '   Détection d'un controle ComboBox
          If wRetour > 0 Then
                    wCtrl.Name.Items.Clear() ???
                    wIndFin = (lsbCouleur.Items.Count - 1)
                    For wInd = 0 To wIndFin
                        wCtrl.Name.Items.Insert(wInd, "Du texte") ???
                    Next
           End If
    End If
     End Sub

    Et son appel

    For Each Ctrl In Me.Controls    '   On recherche les contrôles de la form
                Call Traduction_Suite(Ctrl)
    Next

    J'ai trouvé un "post" qui s'apparente au mien, mais je n'ai pas été capable de l'utiliser

    Cordialement

    SC



    Cordialement SC

    samedi 18 janvier 2014 18:46

Réponses

  • Bonjour,

    Déclarez votre "wCtrl" comme un ComboBox et non comme un contrôle :

    Private Sub Traduction_Suite(ByVal wCtrl As ComboBox)

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    lundi 20 janvier 2014 00:31
    Modérateur

Toutes les réponses

  • Bonjour,

    Déclarez votre "wCtrl" comme un ComboBox et non comme un contrôle :

    Private Sub Traduction_Suite(ByVal wCtrl As ComboBox)

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    lundi 20 janvier 2014 00:31
    Modérateur
  • Bonjour,

    Non, car je ne veux pas spécialiser la procédure

    J'appel cette procédure pour TOUS les contrôles que je trouve dans la FORM, sans m'occuper de leur type

    Bien sure, a y réfléchir, je peut faire une procédure par type de contrôle

    Mais pas de solution plus radicale ?

    Cordialement

    SC


    Cordialement SC

    lundi 20 janvier 2014 08:10
  • Bonjour

    Je vous propose ce code :

    Imports System.Reflection

    ................................

    Public Function CheckProperty(obj As Object, prop As String) Dim bRet As Boolean = True Dim prInfo As PropertyInfo = obj.GetType.GetProperty(prop) If prInfo Is Nothing Then bRet = False Return bRet End Function

    .............................................................

    MessageBox.Show(CheckProperty(New ComboBox(), "Items"))
    MessageBox.Show(CheckProperty(New TextBox(), "Items"))

     La fonction CheckProperty retourne True si l'objet contient une propriété spécifiée par "prop". 

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 20 janvier 2014 10:56
  • Bonjour,

    C'est une excellente fonction

    Mais elle ne détecte pas "HeaderText" , "ToolTipText" (ou Header" , "ToolTipt") pour le DataGridView et les TabPage

    Je vais donc reprendre votre première proposition et faire des procédures par type de contrôle

    Je passe en résolue

    Cordialement

    SC


    Cordialement SC

    lundi 20 janvier 2014 16:18