C# Bool变量更改值,但我可以';我不明白为什么
填充我的应用程序中的DataGridView时,将触发以下方法:C# Bool变量更改值,但我可以';我不明白为什么,c#,datagridview,C#,Datagridview,填充我的应用程序中的DataGridView时,将触发以下方法: public void OrderSelectionChanged() { ConfirmOrCancelChangesDialog(); // Get values from selected order and populate controls if (view.OrderTable.SelectedRows.Count != 0) {
public void OrderSelectionChanged()
{
ConfirmOrCancelChangesDialog();
// Get values from selected order and populate controls
if (view.OrderTable.SelectedRows.Count != 0)
{
OrderViewObject ovm = (OrderViewObject)view.OrderTable.SelectedRows[0].DataBoundItem;
selectedOrder = orderModel.GetOrderById(ovm.OrderId);
// Populate view controls with data from selected order
view.OrderID = selectedOrder.Id.ToString();
---->> view.OrderDateCreated = selectedOrder.DateCreated; <<-----
view.OrderDeliveryDate = selectedOrder.DeliveryDate;
PopulateOrderAddressControls(selectedOrder.Address);
PopulateOrderItemTableControl();
PopulateOrderWeightAndSumControls();
view.OrderNote = selectedOrder.Note;
// Enable buttons
view.DeleteOrderButtonEnabled = true;
view.NewOrderItemButtonEnabled = true;
}
else
{
view.DeleteOrderButtonEnabled = false;
}
}
这会导致每次启动应用程序时都出现“保存或取消”对话框,这显然是错误的。由于selection changed方法会触发三次,并且在第一次运行期间isSaved会发生更改,因此该对话框会在第二次运行期间弹出。通过一步一步地调试,我可以弄清楚isSaved在哪一点发生了变化,但不能弄清楚它是如何变化的或为什么变化的
视图是表单,OrderDateCreated是DateTimePicker的getter/setter,selectedOrder只是一个order对象,DateCreated是一个日期。我是不是遗漏了什么
干杯 它似乎与
视图
对象的代码设置值有关。
如果您没有自己创建属性,则该对象可能具有检测任何更改的set
属性,并将isSaved
属性设置为false
尝试以下解决方法:
bool wasSaved = isSaved; //reference properly to your isSaved variable, and store it in the wasSaved local var
view.OrderID = selectedOrder.Id.ToString();
view.OrderDateCreated = selectedOrder.DateCreated;
view.OrderDeliveryDate = selectedOrder.DeliveryDate;
isSaved = wasSaved; //revert to the previous state
它就在那条线上变化?您已经通过单步执行调试器并在执行这一行之前和之后检查
isSaved
的值来确认了这一点?在哪里定义了isSaved
?在哪里引用了isSaved
变量?我们真的需要查看更多的上下文。isSaved
是否有一个特殊的set
方法?我看到的代码不应该在by you指定的行中更改“isSaved”,你能添加对“isSaved”的所有引用吗?你能在isSaved中放置一个断点以查看到底是什么在更改它吗?可能有一个事件更改了值(例如:如果属性发生更改,则变量设置为false)。
bool wasSaved = isSaved; //reference properly to your isSaved variable, and store it in the wasSaved local var
view.OrderID = selectedOrder.Id.ToString();
view.OrderDateCreated = selectedOrder.DateCreated;
view.OrderDeliveryDate = selectedOrder.DeliveryDate;
isSaved = wasSaved; //revert to the previous state