相关疑难解决方法(0)

在验证文本框/复选框之前,文本框/复选框的数据绑定值不正确

我有一个winforms复选框,绑定到Entity Framework实体的属性.

因此,例如,我有bindingSource.DataSource = myDog一个绑定到属性的复选框IsSleeping,以便当用户选中该框时,IsSleeping变为true,并且当用户取消选中该框时,IsSleeping将变为false.

这很好用.问题是,价值IsSleeping不更新,直到该复选框被验证,只有当焦点发生移动远离从复选框别的东西.因此,如果我想在取消选中该框时发生某些事情:

private void IsSleepingCheckbox_CheckedChanged(object sender, EventArgs e)
{
    OnDogPropertyChanged(myDog);
    MyAnimalEntities.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

myDog.IsSleeping仍然是真的,直到Validated稍后提出复选框.因此,当穷人myNaughtyKitty (谁正在听这个DogPropertyChanged事件)来吃饭时,myDog想着myDog睡觉的食物菜,myDog真的只是醒来! 不好了!

更糟糕的是,MyAnimalEntities.SaveChanges()还没有看到更改myDog,因此值IsSleeping永远不会保存到数据库中.移动.SaveChanges()呼叫IsSleepingCheckbox_Validated并不能解决这个问题,因为如果复选框被切换但是表格被关闭而没有将焦点离复选框,则复选框永远不会被验证,因此它的状态永远不会被保存!

我想这对于数据绑定和复选框/文本框来说一定是一个相当常见的问题,事实上我在网上发现了大量关于这个主题的帖子,但似乎没有人有过解决方案. 有没有人能够为此找到解决方法?

.net c# data-binding entity-framework winforms

6
推荐指数
1
解决办法
3373
查看次数

标签 统计

.net ×1

c# ×1

data-binding ×1

entity-framework ×1

winforms ×1