C# Bool变量更改值,但我可以';我不明白为什么

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) {

填充我的应用程序中的DataGridView时,将触发以下方法:

        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