>我遇到了以下情况:
try
{
Validate();
myBindingSource.MoveNext();
}
catch
{
if (MessageBox.Show("Do you want to keep editing the record?", "Error",
MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No)
{
myBindingSource.CancelEdit();
}
}
其中 myBindingSource.Datasource 是一个数据表,数据绑定文本框在验证时更新。
我将当前记录的数据绑定文本框更改为无效状态(例如重复的主键)。 当我调用上面的代码片段时,自然会抛出异常。
在 catch 块中,可处理行的字段值已恢复为其原始值,但文本框值保持不变(我想要相同的文本框值)。
如果我再次调用相同的代码段,则不会引发异常(数据表具有正确的值)。
我的问题是我如何制作文本框以将其数据再次发送到数据表?
附言:如果在第一次调用代码片段后更改文本框的值,则数据集将接收更改。
我的最终解决方案如下(尽管它将所有数据绑定控件写回数据源。至少它使数据源和控件保持同步):
try
{
Validate();
myBindingSource.MoveNext();
}
catch
{
if (MessageBox.Show("Do you want to keep editing the record?", "Error",
MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No)
{
myBindingSource.CancelEdit();
}
else
{
foreach (Binding b in myBindingSource.CurrencyManager.Bindings)
{
b.WriteValue();
}
}
}