Procédure pas à pas : création d'un contrôle utilisateur prenant en charge la liaison de données de recherche

Mise à jour : novembre 2007

Lorsque vous affichez des données sur des Windows Forms, vous pouvez soit choisir des contrôles existants de la Boîte à outils, soit créer des contrôles personnalisés si votre application requiert des fonctionnalités non disponibles dans les contrôles standard. Cette procédure pas à pas explique comment créer un contrôle qui implémente LookupBindingPropertiesAttribute. Les contrôles qui implémentent LookupBindingPropertiesAttribute peuvent contenir trois propriétés qui peuvent être liées aux données. Ces contrôles sont semblables à ComboBox.

Pour plus d'informations sur la création de contrôles personnalisés, consultez Développement de contrôles Windows Forms au moment du design.

Lors de la création de contrôles à utiliser dans les scénarios de liaison de données, vous devez implémenter l'un des attributs de liaison de données suivants :

Utilisation des attributs de liaison de données

Implémentez DefaultBindingPropertyAttribute sur des contrôles simples, comme un TextBox qui affiche une seule colonne (ou propriété) de données. Pour plus d'informations, consultez Procédure pas à pas : création d'un contrôle utilisateur prenant en charge la liaison de données simple.

Implémentez ComplexBindingPropertiesAttribute sur les contrôles, comme un DataGridView, qui affichent des listes (ou tables) de données. Pour plus d'informations, consultez Procédure pas à pas : création d'un contrôle utilisateur prenant en charge la liaison de données complexe.

Implémentez LookupBindingPropertiesAttribute sur les contrôles, comme un ComboBox, qui affichent des listes (ou tables) de données, mais qui ont également besoin de présenter une seule colonne ou propriété. (Ce processus est décrit dans cette page de procédure pas à pas.)

Cette procédure pas à pas crée un contrôle de recherche qui crée une liaison avec les données de deux tables. Cet exemple utilise les tables Customers et Orders de l'exemple de base de données Northwind. Le contrôle de recherche sera lié au champ CustomerID de la table Orders. Il utilisera cette valeur pour rechercher le CompanyName de la table Customers.

Au cours de cette procédure pas à pas, vous apprendrez à :

  • Créer une nouvelle application Windows.

  • Ajouter un nouveau Contrôle utilisateur à votre projet.

  • Concevoir visuellement le contrôle utilisateur.

  • Implémenter l'attribut LookupBindingProperty.

  • Créer un groupe de données avec l'Assistant Configuration de source de données.

  • Définir la colonne CustomerID de la table Orders dans la fenêtre Sources de données pour qu'elle utilise le nouveau contrôle.

  • Créer un formulaire pour afficher des données dans le nouveau contrôle.

Composants requis

Pour exécuter cette procédure pas à pas, vous devrez :

Création d'une application Windows

La première étape consiste à créer une Application Windows.

Pour créer le nouveau projet Windows

  1. Dans le menu Fichier de Visual Studio, créez un nouveau Projet.

  2. Nommez le projet ProcédureContrôleRecherche.

  3. Sélectionnez Application Windows, puis cliquez sur OK. Pour plus d'informations, consultez Création d'applications Windows.

    Le projet ProcédureContrôleRecherche est créé et ajouté à l'Explorateur de solutions.

Ajout d'un contrôle utilisateur au projet

Cette procédure pas à pas crée un contrôle de recherche à partir d'un Contrôle utilisateur. Ajoutez un élément Contrôle utilisateur au projet ProcédureContrôleRercherche.

Pour ajouter un contrôle utilisateur au projet

  1. Dans le menu Projet, sélectionnez Ajouter un contrôle utilisateur.

  2. Tapez LookupBox dans la zone Nom, puis cliquez sur Ajouter.

    Le contrôle LookupBox est ajouté à l'Explorateur de solutions et s'ouvre dans le concepteur.

Conception du contrôle LookupBox

Pour concevoir le contrôle LookupBox

  • Faites glisser un contrôle ComboBox de la Boîte à outils vers l'aire de conception du contrôle utilisateur.

Ajout de l'attribut de liaison de données requis

Dans le cas de contrôles de recherche qui prennent en charge la liaison de données, vous pouvez implémenter LookupBindingPropertiesAttribute.

Pour implémenter l'attribut LookupBindingProperties

  1. Basculez le contrôle LookupBox en mode Code. (Dans le menu Affichage, sélectionnez Code.)

  2. Remplacez le code dans LookupBox par les éléments suivants :

    <System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")> _
    Public Class LookupBox
    
        Public Property DataSource() As Object
            Get
                Return ComboBox1.DataSource
            End Get
            Set(ByVal value As Object)
                ComboBox1.DataSource = value
            End Set
        End Property
    
        Public Property DisplayMember() As String
            Get
                Return ComboBox1.DisplayMember
            End Get
            Set(ByVal value As String)
                ComboBox1.DisplayMember = value
            End Set
        End Property
    
        Public Property ValueMember() As String
            Get
                Return ComboBox1.ValueMember
            End Get
            Set(ByVal value As String)
                ComboBox1.ValueMember = value
            End Set
        End Property
    
        Public Property LookupMember() As String
            Get
                Return ComboBox1.SelectedValue.ToString()
            End Get
            Set(ByVal value As String)
                ComboBox1.SelectedValue = value
            End Set
        End Property
    End Class
    
    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    
  3. Dans le menu Générer, cliquez sur Générer la solution.

Création d'une source de données à partir de votre base de données

Cette étape permet de créer une source de données à l'aide de l'Assistant Configuration de source de données en se basant sur les tables Customers et Orders fournie dans l'exemple de base de données Northwind. Vous devez avoir accès à l'exemple de base de données Northwind pour créer la connexion. Pour plus d'informations sur l'installation de l'exemple de base de données Northwind, consultez Comment : installer des exemples de bases de données.

Pour créer la source de données

  1. Dans le menu Données, cliquez sur Afficher les sources de données.

  2. Dans la fenêtre Sources de données, sélectionnez Ajouter une nouvelle source de données pour démarrer l'Assistant Configuration de source de données.

  3. Sélectionnez Base de données dans la page Choisir un type de source de données, puis cliquez sur Suivant.

  4. Dans la page Choisir votre connexion de données, effectuez l'une des opérations suivantes :

    • Si une connexion de données à l'exemple de base de données Northwind est disponible dans la liste déroulante, sélectionnez-la.

      - ou -

    • Sélectionnez Nouvelle connexion pour afficher la boîte de dialogue Ajouter une/Modifier la connexion. Pour plus d'informations, consultez Ajouter/Modifier une connexion, boîte de dialogue (Général).

  5. Si votre base de données requiert un mot de passe, sélectionnez l'option pour inclure les données sensibles, puis cliquez sur Suivant.

  6. Cliquez sur Suivant dans la page Enregistrer la chaîne de connexion dans le fichier de configuration de l'application.

  7. Développez le nœud Tables dans la page Choisir vos objets de base de données.

  8. Sélectionnez les tables Customers et Orders, puis cliquez sur Terminer.

    NorthwindDataSet est ajouté à votre projet et les tables Customers et Orders apparaissent dans la fenêtre Sources de données.

Définition de la colonne CustomerID de la table Orders pour qu'elle utilise le contrôle LookupBox

La fenêtre Sources de données vous permet de définir le contrôle à créer avant de faire glisser des éléments vers un formulaire.

Pour définir la colonne CustomerID pour qu'elle crée une liaison avec le contrôle LookupBox

  1. Ouvrez Form1 dans le concepteur.

  2. Développez le nœud Customers dans la fenêtre Sources de données.

  3. Développez le nœud Orders (celui qui se trouve dans le nœud Customers au-dessous de la colonne Fax).

  4. Cliquez sur la flèche de déroulement du nœud Orders et sélectionnez Details dans la liste de contrôles.

  5. Cliquez sur la flèche de déroulement sur la colonne CustomerID (dans le nœud Orders) et sélectionnez Personnaliser.

  6. Sélectionnez LookupBox dans la liste de Contrôles associés dans la boîte de dialogue Options de personnalisation de l'interface utilisateur du formulaire de données.

  7. Cliquez sur OK.

  8. Cliquez sur la flèche de déroulement de la colonne CustomerID et sélectionnez LookupBox.

Ajout de contrôles au formulaire

Vous pouvez créer les contrôles liés aux données en faisant glisser des éléments depuis la fenêtre Sources de données vers Form1.

Pour créer des contrôles liés aux données sur le Windows Form

  • Faites glisser le nœud Orders de la fenêtre Sources de données vers le Windows Form et vérifiez que le contrôle LookupBox est utilisé pour afficher les données dans la colonne CustomerID.

Liaison du contrôle pour rechercher CompanyName dans la table Customers

Pour paramétrer les liaisons de recherche

  • Sélectionnez le nœud Customers principal dans la fenêtre Sources de données et faites-le glisser vers la zone de liste déroulante de CustomerIDLookupBox sur Form1.

    Cela installe la liaison de données pour afficher le CompanyName de la table Customers en maintenant la valeur CustomerID de la table Orders. Pour plus d'informations, consultez Comment : créer des tables de correspondance.

Exécution de l'application

Pour exécuter l'application

  • Appuyez sur F5 pour exécuter l'application.

  • Naviguez dans quelques enregistrements et vérifiez que le CompanyName apparaît dans le contrôle LookupBox.

Voir aussi

Tâches

Comment : définir le contrôle à créer lors d'une opération de glisser-déplacer à partir de la fenêtre Sources de données

Concepts

Nouveautés des données

Vue d'ensemble de l'affichage des données

Autres ressources

Connexion aux données dans Visual Studio

Préparation de votre application pour recevoir des données

Extraction de données dans votre application

Affichage des données sur des formulaires dans les applications Windows

Modification des données dans votre application

Validation des données

Enregistrement des données