Author: jackson
Date: 2005-03-04 05:32:17 -0500 (Fri, 04 Mar 2005)
New Revision: 41431
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
Log:
* Binding.cs: Support <Property>IsNull checks. Also bind to the
controls Validating method so we can repull the data when the
control loses focus.
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
2005-03-04 08:52:39 UTC (rev 41430)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
2005-03-04 10:32:17 UTC (rev 41431)
@@ -40,6 +40,7 @@
private BindingManagerBase manager;
private PropertyDescriptor prop_desc;
+ private PropertyDescriptor is_null_desc;
private object data;
private EventDescriptor changed_event;
@@ -123,6 +124,9 @@
throw new ArgumentException (String.Concat
("Cannot bind to property '", property_name, "' on target control."));
if (prop_desc.IsReadOnly)
throw new ArgumentException (String.Concat
("Cannot bind to property '", property_name, "' because it is read only."));
+
+ control.Validating += new CancelEventHandler
(ControlValidatingHandler);
+
this.control = control;
}
@@ -136,6 +140,8 @@
WirePropertyValueChangedEvent ();
+ is_null_desc = TypeDescriptor.GetProperties
(manager.Current).Find (property_name + "IsNull", false);
+
PullData ();
PushData ();
}
@@ -147,6 +153,14 @@
internal void PullData ()
{
+ if (is_null_desc != null) {
+ bool is_null = (bool) is_null_desc.GetValue
(manager.Current);
+ if (is_null) {
+ data = Convert.DBNull;
+ return;
+ }
+ }
+
PropertyDescriptor pd = TypeDescriptor.GetProperties
(manager.Current).Find (data_member, true);
data = pd.GetValue (manager.Current);
}
@@ -181,6 +195,11 @@
PushData ();
}
+ private void ControlValidatingHandler (object sender,
CancelEventArgs e)
+ {
+ PullData ();
+ }
+
#region Events
public event ConvertEventHandler Format;
public event ConvertEventHandler Parse;
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2005-03-04 08:52:39 UTC (rev 41430)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2005-03-04 10:32:17 UTC (rev 41431)
@@ -1,3 +1,9 @@
+2005-03-04 Jackson Harper <[EMAIL PROTECTED]>
+
+ * Binding.cs: Support <Property>IsNull checks. Also bind to the
+ controls Validating method so we can repull the data when the
+ control loses focus.
+
2005-03-03 Jordi Mas i Hernandez <[EMAIL PROTECTED]>
* ColumnHeader.cs:
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches