gpt4 book ai didi

c# - Visual Studio 2010 : Binding Issues

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:06 26 4
gpt4 key购买 nike

我有一个 C# Windows 窗体应用程序,我们最初在 VS2008 中编写并已移植到 VS2010。它在我们用两个日期属性编写的对象之间有一个绑定(bind),绑定(bind)到两个日期时间选择器控件。

这是设计器代码,显示了其中一个日期时间选择器的绑定(bind);另一个是相同的,当然除了名字:

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;

对象属性设置为获取/设置属性:

public DateTime TradeDate
{
get { return _tradeDate; }
set { _tradeDate = value; }
}

当窗体启动时,我们将窗体的绑定(bind)源绑定(bind)到对象。你可以看到我已经添加了一些明确的代码来避免下面发生的情况,但这没有效果:

//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 crossed a native/managed boundary
Message=Value of '1/1/0001 12:00:00 AM' is not valid for 'Value'. 'Value' should be between 'MinDate' and 'MaxDate'. Parameter name: Value
Source=System.Windows.Forms
ParamName=Value StackTrace: at System.Windows.Forms.DateTimePicker.set_Value(DateTime value) InnerException:

我在这里不知所措。如果我断开两个绑定(bind),它工作正常但显然我需要绑定(bind)来更新对象。同样奇怪的是,如果我在调试器中查看这两个日期的值(显示异常框),我会看到一个有效日期;见下文:

Ceci n'est pas un exception

对象上的日期值相同,因此它们显然在控件的有效日期范围内。

这似乎是 Visual Studio 中的一个错误...除了它可以在我同事的机器上使用相同版本的 .NET 和 Visual Studio 工作。我花了一天时间来解决这个问题,但我不知所措……非常感谢您的帮助。

最佳答案

在你的位置我会:

  • 使用 CamraWorkflowItem.TradeDate 属性 setter 和 getter 上的断点进行调试,并确保它具有您期望的值。

  • 发布完整的堆栈跟踪。

关于c# - Visual Studio 2010 : Binding Issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com