- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含多个文本框和一个数据网格的表单。一个业务实体可以绑定(bind)到此表单。例如,BO 看起来像这样:
class BO : IEditableObject, INotifyPropertyChanged
{
public string FirstName {get; set;}
public string LastName {get; set}
public BindingList<BO> Relatives {get; set}
// implementation of the interfaces
}
所以在表单上,FirstName 和 LastName 绑定(bind)到文本框,Relatives 绑定(bind)到网格。同样在表单上我有按钮保存和取消。单击保存按钮时,我调用 IEditableObject.EndEdit(),单击取消按钮时,我调用 IEditableObject.CancelEdit()。我希望 CancelEdit() 方法拒绝用户所做的所有更改,包括绑定(bind)到网格的 Relatives 中的更改。到目前为止一切顺利..
但是网格控件使用 CurrencyManager(网格实际上是 Devexpress 控件,但没关系,因为我相信 WinForms 控件也使用它)。每次用户更改行时,CurrencyManager 都会为 Relatives 集合中的项目调用 BeginEdit() 和 EndEdit()。因此,当单击 Cancel() 按钮时,只会取消 FirstName 和 LastName 中的更改,因为对于 Relatives 集合中的子对象,EndEdit() 已经被网格的底层 CurrencyManger 调用了!那么,问题是 - 如何防止 CurrencyManager 调用该方法,以便我可以一次调用拒绝所有更改?
谢谢!
最佳答案
您唯一的解决方案是从业务对象中删除 IEditableObject
的实现。 CurrencyManager
(用于 Winforms 中的所有绑定(bind))在绑定(bind)对象更改时自行执行此操作。
您要么必须更改逻辑以处理更高级别的更改跟踪,要么从类中删除接口(interface)但保留方法。这样做意味着您每次都必须显式调用 BeginEdit
、EndEdit
和 CancelEdit
。
关于c# - 如何防止 CurrencyManager 为绑定(bind)对象调用 BeginEdit()/EndEdit() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4934452/
当在背景点击中关闭键盘时,我通常会在我的 Root View 中添加一个点击手势识别器并将其连接到一个 dismissKeyboard: IBAction,它可以是使用以下任一方法实现: // Met
我在一个 View 和一个 textView 中有许多文本字段,我想做的是在编辑停止后切换这些 UI 元素,并且该元素退出 FirstResponder 状态。 //点击屏幕上的空白区域以便键盘消失的
问题已解决。见文末。 抱歉,如果这有点长,但我希望我已经提供了尽可能多的信息来解决这个问题。 问题简要概述:使用我的自定义小键盘在文本字段中输入值。点击完成按钮(应该触发 view.endEditin
我有一个带有两个 UITextView 的 tableView。用户可以通过点击“+”按钮添加任意数量的单元格。 tableView 从一行(单元格)开始。假设用户向两个 textView 添加了一些
我有一个包含文本框的 WPF 窗口。我已经实现了一个在 Crtl-S 上执行的命令,用于保存窗口的内容。我的问题是,如果文本框是事件控件,并且我在文本框中有新编辑的文本,则不会提交文本框中的最新更改。
在 Swift 中,[someTextField].resignFirstResponder() 和 self.view.endEditing(true) 完成相同的任务 - 从用户的 View 中隐
当你按下“return”时,我正在寻找隐藏 iOS 键盘,大约一半的答案是使用 self.view.endEditing(true)和另一半 textField.resignFirstResponde
在我的代码中,我在 UITableView 中有大约 8 个 UITextField,每个都排成一行。我还有一个 UIBarButtonItem,当它被选中时,它会调用方法 hideKeyboard。
这一切都适用于我的应用商店版本。但是,如果我将我的 git 恢复到那个状态,它就不再有效了。可能是因为我更新了 Xcode(现在是 6.3),但不确定。问题是: 当调用 UITextField“编辑开
如何在 UITexFiled 子类中观察,如果当前 textField 在同一个类中开始结束或结束编辑。 如果我写 self.delegate = self 那么我的 ViewController U
我正在使用文本字段,文本字段所在的 View 是由UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdent
我尝试通过按屏幕的任何位置来隐藏键盘。我使用以下代码 override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
场景如下(使用绑定(bind)到 DataSet 中的 DataTable 的 BindingSource): 用户创建了一个新的地址簿联系人,填写First和Last数据绑定(bind)控件中的名称
这个问题在这里已经有了答案: resignFirstResponder vs. endEditing for Keyboard Dismissal (2 个答案) 关闭 6 年前。 我读了这个问题:
我正忙于修复一个错误,目前只有当我在模拟器上运行我的应用程序时才会出现这个错误。本质上,我有一个 UITextView,我正在尝试将消息 endEditing 发送到。如果我在用户编辑 TextVie
我在我的 WinForms 应用程序中使用 DataGridView。我的主要目标是让 Enter 键不移动到网格中的下一行。我仍然需要回车键来验证和结束编辑模式。 我找到了 this FAQ ent
我有一个 UITextView,它是使用下面的方法在 viewDidLoad 上以编程方式创建的。调用 [_answerTextViewBecomeFirstResponder] 后,键盘立即成功显示
我有很多如下形式的代码: // assume that MyDataRow is a datarow from a typed dataset and has a property called So
我有一个 UIVIew,它是一个 subview ,它包含几个 UITextField。这些文本字段之一(用于 DATE)不应使用键盘进行编辑,而是我使用 PopOver 和内部的 Datepicke
我正面临 textField 的荒谬问题,我有两个文本字段,即 tfA 和 tfB,我已经为这些文本字段设置了代表和所有内容,我想要的是,如果我单击 tfA,它应该打印一些东西,并且它正在打印,如果我
我是一名优秀的程序员,十分优秀!