Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用winforms数据绑定检测脏数据_C#_Winforms_Data Binding_2 Way Object Databinding - Fatal编程技术网

C# 使用winforms数据绑定检测脏数据

C# 使用winforms数据绑定检测脏数据,c#,winforms,data-binding,2-way-object-databinding,C#,Winforms,Data Binding,2 Way Object Databinding,我正在使用winforms文本框的双向绑定。 我需要确定用户是否更改了我的数据 正在寻找帮助 如果属性已更改,则似乎会触发此事件,但如果当前属性已更改,则也会触发此事件 有没有办法判断数据是否已更改 但在我看来没有得到回答 Oliver提到“如果列表中的对象支持INotifyPropertyChanged事件,并且用BindingList替换列表,则可以订阅BindingList的ListChanged事件,以了解用户所做的任何更改。” 我的申请符合这些条件,但我不能让它工作。ListCha

我正在使用winforms文本框的双向绑定。 我需要确定用户是否更改了我的数据 正在寻找帮助

如果属性已更改,则似乎会触发此事件,但如果当前属性已更改,则也会触发此事件

有没有办法判断数据是否已更改

但在我看来没有得到回答

Oliver提到“如果列表中的对象支持INotifyPropertyChanged事件,并且用BindingList替换列表,则可以订阅BindingList的ListChanged事件,以了解用户所做的任何更改。”

我的申请符合这些条件,但我不能让它工作。ListChangedType.ItemChanged属性看起来很有希望,但当我导航到下一条记录而不更改数据时,它会更改

我找到了一个链接,但肯定不会那么难

这似乎有效

void bindingSource_BindingComplete(object sender, BindingCompleteEventArgs e)
        {
            if (e.BindingCompleteContext == BindingCompleteContext.DataSourceUpdate)
            {
                var person = (Person)bindingSource.Current;

                if ( person.State == State.Unchanged && (e.BindingCompleteState == BindingCompleteState.Success)
                && e.Binding.Control.Focused)
                {
                    person.State = State.Modified;  // using Julie Lerman's repositories technique
                }
            }
        }