У меня есть приложение C # Windows Forms, которое мы изначально написали в VS2008 и портировали на VS2010.У него есть привязка между объектом, который мы написали, с двумя свойствами даты, привязанными к двум элементам управления выбора даты и времени.
Вот код конструктора, показывающий привязки одного из сборщиков даты и времени;другое идентично, за исключением, конечно, имени:
private System.Windows.Forms.DateTimePicker dtTradeDate;
this.dtTradeDate = new System.Windows.Forms.DateTimePicker();
//
// dtTradeDate
//
this.dtTradeDate.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.bsWorkflowItem, "TradeDate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.dtTradeDate.Format = System.Windows.Forms.DateTimePickerFormat.Short;
this.dtTradeDate.Location = new System.Drawing.Point(383, 43);
this.dtTradeDate.Name = "dtTradeDate";
this.dtTradeDate.Size = new System.Drawing.Size(99, 20);
this.dtTradeDate.TabIndex = 37;
Свойства объекта устанавливаются как свойства get / set:
public DateTime TradeDate
{
get { return _tradeDate; }
set { _tradeDate = value; }
}
Когда форма запускается, мы связываем привязкуисточник формы для объекта.Вы можете видеть, что я добавил некоторый явный код, чтобы избежать ситуации, которая возникает ниже, но это не имеет никакого эффекта:
//Initializing workflow item object
_wfItem = new CamraWorkflowItem(UserSession.User);
_wfItem.TradeDate = DateTime.Today;
_wfItem.EffectiveDate = DateTime.Today;
loading.IncrementLoadingSteps(2);
dtEffDate.Value = DateTime.Today;
dtTradeDate.Value = DateTime.Today;
bsWorkflowItem.DataSource = _wfItem;
Теперь вот действительно очень странная часть.Это прекрасно работает в VS2008, а также на двух рабочих станциях VS2010 моих коллег.Однако это не работает на моем.Когда он достигает последней строки, я получаю следующее исключение:
Исключение System.ArgumentOutOfRangeException перешло собственную / управляемую границу
Сообщение = Значение '01.01.10001 12:00:00 AM'недопустимо для' Value '.Значение должно быть между MinDate и MaxDate.Имя параметра: Значение
Источник = System.Windows.Forms
ParamName = Значение StackTrace: в System.Windows.Forms.DateTimePicker.set_Value (значение DateTime) InnerException:
I'mв недоумении здесь.Если я отключаю обе привязки, все работает нормально, но, очевидно, мне нужна привязка для обновления объекта.Также странно, если я смотрю на значения обеих этих дат в отладчике (с показом окна исключения), я вижу правильную дату;см. ниже:
Значения даты на объекте одинаковы, поэтому они, очевидно, находятся в допустимом диапазоне дат элемента управления.
Этопохоже на ошибку в Visual Studio ... за исключением того, что она работает на компьютерах моих коллег с той же версией .NET и Visual Studio.Я провел целый день, взламывая это, и я в растерянности ... Ваша помощь очень ценится.