CommonTools/DataBinding.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;

namespace CommonTools
{
	public class MyBindingSource : System.Windows.Forms.BindingSource
	{
		public event EventHandler ValueChanged;
		public void RaiseValueChanged(object sender)
		{
			if (ValueChanged != null)
				ValueChanged(sender, null);
		}
	}
	public class BindingWithNotify : System.Windows.Forms.Binding
	{
		public BindingWithNotify(string propertyName, object dataSource, string dataMember) : base(propertyName, dataSource, dataMember, true)
		{
		}
		protected override void OnBindingComplete(BindingCompleteEventArgs e)
		{
			base.OnBindingComplete(e);
			this.Control.Validating += new CancelEventHandler(Control_Validating);
		}

		void Control_Validating(object sender, CancelEventArgs e)
		{
			WriteNotifyIfChanged();
		}
		public void WriteNotify()
		{
			WriteValue();
			NotifyChanged();
		}
		public void WriteNotifyIfChanged()
		{
			object dataobject = DataSource;
			if (dataobject is ICurrencyManagerProvider)
				dataobject = ((ICurrencyManagerProvider)dataobject).CurrencyManager.Current;

			PropertyInfo info = PropertyUtil.GetNestedProperty(ref dataobject, BindingMemberInfo.BindingMember);
			if (info != null)
			{
				object objBefore = info.GetValue(dataobject, null);
				WriteValue();
				object objAfter = info.GetValue(dataobject, null);
				if (objBefore != null && objAfter != null && objBefore.Equals(objAfter) == false)
					NotifyChanged();
				ReadValue();
			}
		}
		protected virtual void NotifyChanged()
		{
			MyBindingSource ds = DataSource as MyBindingSource;
后面还有 50 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。