using System;
using System.Collections;
using System.ComponentModel;
+using System.Reflection;
namespace System.Windows.Forms {
-
+ [DefaultEvent("CollectionChanged")]
+ [Editor("System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing, typeof(System.Drawing.Design.UITypeEditor))]
+ [TypeConverter("System.Windows.Forms.Design.ControlBindingsConverter, " + Consts.AssemblySystem_Design)]
public class ControlBindingsCollection : BindingsCollection {
-
+ #region Fields
private Control control;
+ #endregion // Fields
- internal ControlBindingsCollection (Control control)
- {
+ #region Constructors
+ internal ControlBindingsCollection (Control control) {
this.control = control;
}
+ #endregion // Constructors
+ #region Public Instance Properties
+ public Control Control {
+ get {
+ return control;
+ }
+ }
+
+ public Binding this[string propertyName] {
+ get {
+ foreach (Binding b in base.List) {
+ if (b.PropertyName == propertyName) {
+ return b;
+ }
+ }
+ return null;
+ }
+ }
+ #endregion // Public Instance Properties
+
+ #region Public Instance Methods
public new void Add (Binding binding)
{
AddCore (binding);
public Binding Add (string property_name, object data_source, string data_member)
{
+ if (data_source == null) {
+ throw new ArgumentNullException ("DataSource cannot be null.");
+ }
+
Binding res = new Binding (property_name, data_source, data_member);
Add (res);
return res;
}
+ public new void Clear() {
+ base.Clear();
+ }
+
+ public new void Remove(Binding binding) {
+ if (binding == null) {
+ throw new NullReferenceException("The binding is null");
+ }
+
+ base.Remove(binding);
+ }
+
+ public new void RemoveAt(int index) {
+ if (index < 0 || index >= base.List.Count) {
+ throw new ArgumentOutOfRangeException("index");
+ }
+
+ base.RemoveAt(index);
+ }
+ #endregion // Public Instance Methods
+
+ #region Protected Instance Methods
protected override void AddCore (Binding binding)
{
if (binding == null)
if (binding.Control != null && binding.Control != control)
throw new ArgumentException ("dataBinding belongs to another BindingsCollection");
+
+ for (int i = 0; i < Count; i++) {
+ Binding bnd = this [i];
+ if (bnd == null || bnd.PropertyName.Length == 0 || binding.PropertyName.Length == 0) {
+ continue;
+ }
+
+ if (String.Compare (bnd.PropertyName, binding.PropertyName, true) == 0) {
+ throw new ArgumentException ("The binding is already in the collection");
+ }
+ }
binding.SetControl (control);
+ binding.Check (control.BindingContext);
base.AddCore (binding);
}
+
+ protected override void ClearCore() {
+ base.ClearCore ();
+ }
+
+ protected override void RemoveCore(Binding dataBinding) {
+ if (dataBinding == null) {
+ throw new ArgumentNullException ("dataBinding");
+ }
+
+ base.RemoveCore (dataBinding);
+ }
+ #endregion // Protected Instance Methods
}
}