- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以取消在 BindingSource.AddingNew
事件处理程序中添加项目?
当用户单击我的 BindingNavigator
中的“添加新”按钮时,我将打开一个对话框,该对话框可能返回也可能不返回有效文件。现在,我有这样的事情:
void bindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
using (var dialog = new OpenFileDialog())
{
var result = dialog.ShowDialog();
// user canceled?
if (result == DialogResult.Cancel)
return;
// TryLoad will return null on failure
var data = TryLoad(dialog.FileName);
// only add the item to the grid if not null
if (data != null)
e.NewObject = data;
}
}
即使我没有将 e.NewObject
设置为处理程序中的值,DataGridView 中也会出现一个新的(“空”)项。
是否可以取消添加项目?
最佳答案
如果您的 BindingSource 实现了 ICancelAddNew接口(interface),你应该能够在新添加的对象上调用 CancelNew 来恢复它。我不建议在 AddNew 的事件处理程序中尝试这样做。通过此接口(interface),您的项目仍将添加到列表中,但处于挂起状态,其中 EndNew() 将提交事务,而 CancelNew() 将恢复事务。它看起来像 BindingList实现 ICancelNew 并允许您执行以下操作:
public void MyFunctionWhereIAddNew()
{
var item = _myBindingSource.AddNew();
item.SetSomeParams(...);
if(item.CheckItemForSuccess() != true)
{
_myBindingSource.CancelNew(_myBindingSource.IndexOf(item));
}
}
如果您想获得有关如何实现自己的 ICancelNew 的链接,请查看 this old blog post .
关于c# - BindingSource 取消 AddingNew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565895/
是否可以取消在 BindingSource.AddingNew 事件处理程序中添加项目? 当用户单击我的 BindingNavigator 中的“添加新”按钮时,我将打开一个对话框,该对话框可能返回也
我的应用程序中有一个 BindingList,我希望能够使用 AddingNew 事件来确定列表中的某个项目是否包含即将添加的信息被添加。如果是,则应中止该项目的添加。 基本上,我正在寻找的是 e.C
我是一名优秀的程序员,十分优秀!