Data Source Windows Tips & Trics
How to: Bind a Custom Control type to class public property in Data Source Windows
Step 1: Build your object
public class Machine { private string model; private string id; private decimal price; private Part part; public Machine() { part = new Part(); parts = new ListStep 2: Build your UserControl ( for Part object )(); } [Bindable(true)] public string Model { get { return model; } set { model = value; } } [Bindable(true)] public string Id { get { return id; } set { id = value; } } [Bindable(true)] public decimal Price { get { return price; } set { price = value; } } [Bindable(true)] public Part Part { get { return part; } } } public class Part { private string partId; public string PartId { get { return partId; } set { partId = value; } } private string name; public string Name { get { return name; } set { name = value; } } }
[DefaultBindingProperty("Part")] public partial class PartControl : UserControl { private Part m_Part; public Part Part { get { return m_Part; } set { m_Part = value; if ( !DesignMode && value != null ) partBindingSource.DataSource = value; } } public PartControl() { InitializeComponent(); partBindingSource.DataSource = typeof(Part); txbName.DataBindings.Add ("Text", partBindingSource, "Name"); txbPartID.DataBindings.Add("Text", partBindingSource, "PartId"); } }Step 3: Customize the part property to the PartControl
* Open Data Source windows
* Select new data source
* Select Machine class
* Select Part property
* Right Click --> Customize --> Open Option Windows
* Select Other
* Select PartControl --> OK
* Select Part Property--> Right-Click--> Select PartControl
* Select Machine-->Right-Click--> Select Details
=================================
Drag and Drop the Machine to the form......
This demo for 1:1 for 1:M use ComplexBindingProperties or LookupBindingProperties attribute