* XplatUIX11.cs: Removed unused hwnd var in SetBorderStyle.
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ControlBindingsCollection.cs
index b6b322328a5a1ceed38cf99ae14ea421d330a60d..913744aacd60521178f62eed7ae3ad915fcbd8f7 100644 (file)
@@ -31,8 +31,8 @@ using System.Reflection;
 
 namespace System.Windows.Forms {
        [DefaultEvent("CollectionChanged")]
-       [Editor("System.Drawing.Design.UITypeEditor, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(System.Drawing.Design.UITypeEditor))]
-       [TypeConverter("System.Windows.Forms.Design.ControlBindingsConverter, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+       [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;
@@ -72,16 +72,20 @@ namespace System.Windows.Forms {
 
                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 void Clear() {
+               public new void Clear() {
                        base.Clear();
                }
 
-               public void Remove(Binding binding) {
+               public new void Remove(Binding binding) {
                        if (binding == null) {
                                throw new NullReferenceException("The binding is null");
                        }
@@ -89,7 +93,7 @@ namespace System.Windows.Forms {
                        base.Remove(binding);
                }
 
-               public void RemoveAt(int index) {
+               public new void RemoveAt(int index) {
                        if (index < 0 || index >= base.List.Count) {
                                throw new ArgumentOutOfRangeException("index");
                        }
@@ -106,22 +110,34 @@ namespace System.Windows.Forms {
 
                        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() {\r
-                       base.ClearCore ();\r
-               }\r
+               protected override void ClearCore() {
+                       base.ClearCore ();
+               }
 
-               protected override void RemoveCore(Binding dataBinding) {\r
+               protected override void RemoveCore(Binding dataBinding) {
                        if (dataBinding == null) {
                                throw new ArgumentNullException ("dataBinding");
                        }
 
-                       base.RemoveCore (dataBinding);\r
-               }\r
+                       base.RemoveCore (dataBinding);
+               }
                #endregion      // Protected Instance Methods
        }
 }