Condividi tramite


Creare un controllo utente di .NET Framework Windows Form che supporta il data binding di ricerca

Nota

I set di dati e le classi correlate sono tecnologie .NET Framework legacy dei primi anni '2000 che consentono alle applicazioni di lavorare con i dati in memoria mentre le applicazioni vengono disconnesse dal database. Le tecnologie sono particolarmente utili per le applicazioni che consentono agli utenti di modificare i dati e rendere persistenti le modifiche apportate al database. Anche se i set di dati hanno dimostrato di essere una tecnologia molto efficace, è consigliabile che le nuove applicazioni .NET usino Entity Framework Core. Entity Framework offre un modo più naturale per usare i dati tabulari come modelli a oggetti e ha un'interfaccia di programmazione più semplice.

Quando si visualizzano dati nei Windows Form, è possibile scegliere i controlli esistenti dalla Casella degli strumenti o creare controlli personalizzati se l'applicazione richiede funzionalità che non sono disponibili nei controlli standard. In questa procedura dettagliata è illustrato come creare un controllo che implementa LookupBindingPropertiesAttribute. I controlli che implementano LookupBindingPropertiesAttribute possono contenere tre proprietà associabili ai dati. Tali controlli sono simili a ComboBox.

Per altre informazioni sulla creazione di controlli, vedere Sviluppo di controlli Windows Form in fase di progettazione.

Quando si creano controlli da usare negli scenari di data binding, è necessario implementare uno degli attributi di data binding seguenti:

Utilizzo degli attributi di data binding
Implementare DefaultBindingPropertyAttribute su controlli semplici, ad esempio TextBox, che visualizzano una singola colonna, o proprietà, di dati. Per altre informazioni, vedere Creare un controllo utente Windows Form che supporta il data binding semplice.
Implementare ComplexBindingPropertiesAttribute su controlli, ad esempio DataGridView, che visualizzano elenchi, o tabelle, di dati. Per altre informazioni, vedere Creare un controllo utente Windows Form che supporta il data binding complesso.
Implementare LookupBindingPropertiesAttribute su controlli, ad esempio ComboBox, che visualizzano elenchi, o tabelle, di dati ma che devono anche presentare una singola colonna o proprietà. Il processo è descritto in questa pagina di procedura dettagliata.

Questa procedura dettagliata crea un controllo di ricerca che effettua l'associazione ai dati di due tabelle. Questo esempio usa le tabelle Customers e Orders del database di esempio Northwind. Il controllo di ricerca è associato al CustomerID campo della Orders tabella. Usa questo valore per cercare dalla CompanyName Customers tabella.

Durante questa procedura dettagliata si apprenderà come:

  • Creare una nuova app Windows Form (.NET Framework).

  • Aggiungere un nuovo controllo utente al progetto.

  • Progettare visivamente il controllo utente.

  • Implementare l'attributo LookupBindingProperty.

  • Creare un set di dati con la configurazione guidata origine dati.

  • Impostare la colonna CustomerID nella tabella Orders della finestra Origini dati per usare il nuovo controllo.

  • Creare un form per visualizzare i dati nel controllo.

Prerequisiti

Per completare questa esercitazione, sono necessari i carichi di lavoro sviluppo per desktop .NET e Archiviazione dati ed elaborazione dei dati installati in Visual Studio. Per installarli, aprire Programma di installazione di Visual Studio e scegliere Modifica (o Altro>modifica) accanto alla versione di Visual Studio da modificare. Vedere Modificare Visual Studio.

Questa procedura dettagliata usa SQL Server Express LocalDB e il database di esempio Northwind.

  1. Se SQL Server Express LocalDB non è disponibile, installarlo dalla pagina di download di SQL Server Express o tramite il Programma di installazione di Visual Studio. Nella Programma di installazione di Visual Studio è possibile installare SQL Server Express LocalDB come parte del carico di lavoro Archiviazione ed elaborazione dei dati o come singolo componente.

  2. Installare il database di esempio Northwind seguendo questa procedura:

    1. In Visual Studio aprire la finestra Esplora oggetti di SQL Server. SQL Server Esplora oggetti viene installato come parte del carico di lavoro Archiviazione ed elaborazione dei dati nel Programma di installazione di Visual Studio. Espandere il nodo SQL Server. Fare clic con il pulsante destro del mouse sull'istanza di LocalDB e scegliere Nuova query.

      Verrà visualizzata una finestra dell'editor di query.

    2. Copiare lo script Transact-SQL Northwind negli Appunti. Questo script T-SQL crea il database Northwind da zero e lo popola con i dati.

    3. Incollare lo script T-SQL nell'editor di query e quindi scegliere il pulsante Esegui .

      Dopo un breve periodo di tempo, la query termina l'esecuzione e viene creato il database Northwind.

Creare un progetto di app Windows Form

Il primo passaggio consiste nel creare un progetto app (.NET Framework) di Windows Form.

  1. Nel menu File in Visual Studio selezionare Nuovo>Progetto.

  2. Espandere Visual C# o Visual Basic nel riquadro a sinistra, quindi selezionare Desktop di Windows.

  3. Nel riquadro centrale selezionare il tipo di progetto Windows Form app.

  4. Assegnare al progetto il nome LookupControlWalkthrough e quindi scegliere OK.

    Il progetto LookupControlWalkthrough viene creato e aggiunto a Esplora soluzioni.

Aggiungere un controllo utente al progetto

Dal momento che questa procedura dettagliata crea un controllo di ricerca da un Controllo utente, è necessario aggiungere un elemento Controllo utente al progetto LookupControlWalkthrough.

  1. Selezionare Aggiungi controllo utente dal menu Progetto.

  2. Digitare LookupBox nell'area Nome e quindi selezionare Aggiungi.

    Il controllo LookupBox viene aggiunto a Esplora soluzioni e si apre nella finestra di progettazione.

Progettare il controllo LookupBox

Per progettare il controllo LookupBox, trascinare un ComboBox oggetto dalla casella degli strumenti nell'area di progettazione del controllo utente.

Aggiungere l'attributo di data binding richiesto

Per controlli di ricerca che supportano il data binding, è possibile implementare l'attributo LookupBindingPropertiesAttribute.

  1. Passare al controllo LookupBox per la visualizzazione del codice. Scegliere Codice dal menu Visualizza.

  2. Sostituire il codice nel controllo LookupBox con la stringa seguente:

    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. Scegliere Compila soluzione dal menu Compila.

Creare un'origine dati dal database

Questo passaggio crea un'origine dati usando la Configurazione guidata origine dati basata sulle tabelle Customers e Orders nel database di esempio Northwind.

  1. Per aprire la finestra Origini dati, scegliere Mostra origini dati dal menu Dati.

  2. Nella finestra Origini dati selezionare Aggiungi nuova origine dati per avviare la Configurazione guidata origine dati.

  3. Selezionare Database nella pagina Scegliere un tipo di origine dati e quindi selezionare Avanti.

  4. Nella pagina Seleziona connessione dati eseguire una delle operazioni seguenti:

    • Se nell'elenco a discesa è disponibile una connessione dati al database di esempio Northwind, selezionarla.

    • Selezionare Nuova connessione per aprire la finestra di dialogo Aggiungi/Modifica connessione.

  5. Se il database richiede una password, selezionare l'opzione per includere dati sensibili e quindi selezionare Avanti.

  6. Nella pagina Salva stringa di connessione nel file di configurazione dell'applicazione fare clic su Avanti.

  7. Espandere il nodo Tables nella pagina Seleziona oggetti di database.

  8. Selezionare le Customers tabelle e Orders e quindi selezionare Fine.

    L'oggetto NorthwindDataSet viene aggiunto al progetto e le tabelle Customers e Orders vengono visualizzate nella finestra Origini dati.

Impostare la colonna CustomerID della tabella Orders per utilizzare il controllo LookupBox

Nella finestra Origini dati è possibile impostare il controllo da creare prima di trascinare elementi nel modulo.

  1. Aprire Form1 nella finestra di progettazione.

  2. Espandere il nodo Customers nella finestra Origini dati.

  3. Espandere il nodo Orders (nel nodo Customers sotto la colonna Fax).

  4. Fare clic sulla freccia dell'elenco a discesa nel nodo Ordini e scegliere Dettagli dall'elenco di controlli.

  5. Fare clic sulla freccia dell'elenco a discesa nella colonna CustomerID (nel nodo Ordini ) e scegliere Personalizza.

  6. Selezionare LookupBox dall'elenco Controlli associati nella finestra di dialogo Personalizzazione dell'interfaccia utente dati.

  7. Fare clic su OK.

  8. Fare clic sulla freccia dell'elenco a discesa nella colonna CustomerID e scegliere LookupBox.

Aggiungere controlli al modulo

È possibile creare i controlli associati ai dati trascinando elementi dalla finestra Origini dati in Form1.

Per creare controlli associati a dati in Windows Form, trascinare il nodo Orders dalla finestra Origini dati in Windows Form e verificare che il controllo LookupBox venga utilizzato per visualizzare i dati nella CustomerID colonna.

Associare il controllo per cercare CompanyName dalla tabella Customers

Per configurare le associazioni di ricerca, selezionare il nodo Clienti principale nella finestra Origini dati e trascinarlo nella casella combinata in CustomerIDLookupBox in Form1.

Viene in questo modo impostato il data binding per visualizzare CompanyName dalla tabella Customers, mantenendo al contempo il valore CustomerID della tabella Orders.

Eseguire l'applicazione

  • Premere F5 per eseguire l'applicazione.

  • Spostarsi all'interno di alcuni record e verificare che CompanyName venga mostrato nel controllo LookupBox.