How to: Bind a Windows Forms Control to a Type

When you are building controls that interact with data, you will sometimes find it necessary to bind a control to a type, rather than an object. This situation arises especially at design time, when data may not be available, but your data-bound controls still need to display information from a type's public interface. For example, you may bind a DataGridView control to an object exposed by a Web service and want the DataGridView control to label its columns at design time with the member names of a custom type.

You can easily bind a control to a type with the BindingSource control.

Example

The following code example demonstrates how to bind a DataGridView control to a custom type by using a BindingSource control. When you run the example, you'll notice the DataGridView has labeled columns that reflect the properties of a Customer object, before the control is populated with data. The example has an Add Customer button to add data to the DataGridView control. When you click the button, a new Customer object is added to the BindingSource. In a real-world scenario, the data might be obtained by a call to a Web service or other data source.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

class Form1 : Form
{
    BindingSource bSource  = new BindingSource();
    DataGridView dgv = new DataGridView();

    public Form1()
    {
        // Bind the BindingSource to the DemoCustomer type.
        bSource.DataSource = typeof(DemoCustomer);

        // Set up the DataGridView control.
        dgv.Dock = DockStyle.Fill;
        this.Controls.Add(dgv);

        // Bind the DataGridView control to the BindingSource.
        dgv.DataSource = bSource  ;
    }
}

// This simple class is used to demonstrate binding to a type.
public class DemoCustomer
{
    // These fields hold the data that backs the public properties.
    DateTime birthDateValue = DateTime.MinValue;
    Guid idValue = Guid.NewGuid();

    // This is a property that represents a birth date.
    public DateTime BirthDate
    {
        get
        {
            return this.birthDateValue;
        }
        set
        {
            if (value != this.birthDateValue)
            {
                this.birthDateValue = value;
            }
        }
    }

    // This is a property that represents a customer ID.
    public Guid ID
    {
        get
        {
            return this.idValue;
        }
    }
}

Compiling the Code

This example requires:

  • References to the System and System.Windows.Forms assemblies.

For information about building this example from the command line for Visual Basic or Visual C#, see Building from the Command Line (Visual Basic) or Command-Line Building. You can also build this example in Visual Studio by pasting the code into a new project. How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio
How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio
How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio
How to: Compile and Run a Complete Windows Forms Code Example Using Visual Studio

See Also

Show: