我在VS2012中的表单上有一个名为binding的bindingsource控件,并且有一个绑定到它的DateTimePicker控件。
对于绑定属性,我具有MinDate = 1/01/1753和MaxDate = 31/12/9998值是通过从压延机中选择“今天”设置的。2013年5月4日11:27 AM
我使用设置了绑定源
var dset = base.Context.ContactEvents;
var qry = dset.Where(p => p.Id > 0).OrderBy(x => x.Id);
qry.Load();
this.bindingSource.DataSource = dset.Local.ToBindingList();
Run Code Online (Sandbox Code Playgroud)
绑定源的使用方式如下:
public void RefreshBindingDataSourceAndPosition(BindingSource binding)
{
binding.DataSource = this.bindingSource.DataSource; // error raised here
binding.Position = this.bindingSource.Position;
}
Run Code Online (Sandbox Code Playgroud)
错误信息是
System.ArgumentOutOfRangeException越过了本机/托管边界HResult = -2146233086 Message =值'1/01/0001 12:00:00 AM'对'值'无效。“值”应介于“ MinDate”和“ MaxDate”之间。参数名称:值Source = System.Windows.Forms ParamName =值StackTrace:在System.Windows.Forms.DateTimePicker.set_Value(DateTime值)内部异常:
我可以通过不绑定数据选择器并将其设置在EventsBindingSource_CurrentChanged事件中来解决此问题。
但是,这样做似乎很奇怪。如何使数据绑定正常工作?
[更新]此问题与此处描述的问题类似, 我试图在一个较简单的项目中重现此问题,以便尝试找出原因,但是它在较简单的项目中有效。项目也可以在另一台计算机上工作。在同时使用SQL Server 2012和2008R2的计算机上会发生此问题。我尝试在控制面板中更改日期格式和国家/地区。我也尝试了format属性的不同设置。我也尝试将日期字段设置为支持null。
当我将错误复制到剪贴板时,它显示以下内容;
发生System.Reflection.TargetInvocationException HResult = -2146232828 Message = Exception已由调用目标抛出。Source = mscorlib StackTrace:位于System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object []参数,Object []参数)的System.RuntimeMethodHandle.InvokeMethod(对象目标,Object []参数,签名sig,布尔构造函数)InnerException: …