Data binding = "automatic way of setting any run-time accessible property of any control on a form" [MS]
Two kinds:
There are many kinds of sources for data binding. You can bind to:
But the thing you really want to bind to for most situations is a BindingSource.
Really, we will want to do all our work using BindingSource.
However, the example below shows how to do simple data-binding to text boxes by hand. You could do this in .Net 1.x. Code is in my example VS\BasicDataBinding.
In this example:
public class Student
{
public Student() { name = string.Empty; grade = 0; }
public Student ( string name, int grade)
{
this.name = name;
this.grade = grade;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int grade;
public int Grade
{
get { return grade; }
set { grade = value; }
}
public Color GradeColor
{
get { return grade >= 90
? Color.Green
: grade >= 80
? Color.Yellow
: grade >= 70
? Color.Orange
: Color.Red; }
}
public override string ToString()
{
return String.Format("[{0} {1} {2}]",
name, grade, GradeColor);
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Student m_student = new Student("Fred", 95);
string[] m_animals = { "lions", "tigers", "bears", "pandas", "voles" };
private void Form1_Load(object sender, EventArgs e)
{
txtName.DataBindings.Add("Text", m_student, "Name");
txtGrade.DataBindings.Add("Text", m_student, "Grade");
txtGrade.DataBindings.Add("BackColor", m_student, "GradeColor");
txtAnimal.DataBindings.Add("Text", m_animals, null);
}
private void btnReport_Click(object sender, EventArgs e)
{
MessageBox.Show(m_student.ToString());
}
private void btnNext_Click(object sender, EventArgs e)
{
BindingManagerBase mgr = this.BindingContext[m_animals];
++mgr.Position;
}
private void btnPrev_Click(object sender, EventArgs e)
{
Binding binding = txtAnimal.DataBindings["Text"];
BindingManagerBase mgr = binding.BindingManagerBase;
--mgr.Position;
}
}