C# 在休假或更改值时设置控制值

C# 在休假或更改值时设置控制值,c#,.net,devexpress,C#,.net,Devexpress,当我不知道是什么原因导致这种行为时,很难解释这个问题,但我会尝试 在我的表单上有两个Devexpress SpinEdit控件(SpinEdit类表示一个控件,该控件由一个文本编辑器和一对旋转按钮组成,用户可以单击这些按钮来调整值,就像使用NumericUpDown) 问题是,在处理“旋转编辑1”值更改事件后,我无法设置第二次旋转编辑的值 当表单加载的两个控件都从数据库获取值时(十进制18,2) 比如说: priceSpinEdit值为100,00 折扣Spinedit值为10,00 当用户更改

当我不知道是什么原因导致这种行为时,很难解释这个问题,但我会尝试

在我的表单上有两个
Devexpress SpinEdit控件
SpinEdit
类表示一个控件,该控件由一个文本编辑器和一对旋转按钮组成,用户可以单击这些按钮来调整值,就像使用
NumericUpDown

问题是,在处理“旋转编辑1”值更改事件后,我无法设置第二次旋转编辑的值

当表单加载的两个控件都从数据库获取值时(十进制18,2)

比如说:

priceSpinEdit值为100,00

折扣Spinedit值为10,00

当用户更改折扣百分比时,我需要计算带有折扣的价格,并将值放入带有折扣的价格Spinedit

我有工作正常的代码

    private void supplierDiscountPercetangeSpinEdit_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
    {
        decimal price, percentage, calculatedPrice;

        price = (decimal)supplierPriceSpinEdit.EditValue;
        percentage = Convert.ToDecimal(e.NewValue, CultureInfo.InvariantCulture);

        calculatedPrice = Popust.Izracunaj(price, percentage);

        supplierPriceWithDiscountSpinEdit.EditValue = calculatedPrice;

    }
当焦点设置在控件上时,我将计算SupplierPrice WithDiscountSpinedit显示正确的计算值,但在该控件失去焦点后的第二秒,该值将设置为从数据库加载的值

我想我需要将值写入对象,但后来我尝试将其放入简单的按钮点击中,它就工作了(值棒的)

所以我的问题是,为什么在计算价格时,正确的值会显示在第二个spinEdit中,而在失去焦点后,它会消失

很抱歉提出了这么长的问题,如果有必要,我可以添加更多信息

编辑:spinedit控件

        // 
        // supplierPriceWithDiscountSpinEdit
        // 
        this.supplierPriceWithDiscountSpinEdit.DataBindings.Add(new System.Windows.Forms.Binding("EditValue", this.productBindingSource, "SupplierPriceWithDiscount", true));
        this.supplierPriceWithDiscountSpinEdit.EditValue = "0,00";
        this.supplierPriceWithDiscountSpinEdit.EnterMoveNextControl = true;
        this.supplierPriceWithDiscountSpinEdit.Location = new System.Drawing.Point(527, 33);
        this.supplierPriceWithDiscountSpinEdit.MenuManager = this.barManager1;
        this.supplierPriceWithDiscountSpinEdit.Name = "supplierPriceWithDiscountSpinEdit";
        this.supplierPriceWithDiscountSpinEdit.Properties.Mask.BeepOnError = true;
        this.supplierPriceWithDiscountSpinEdit.Properties.Mask.EditMask = "n2";
        this.supplierPriceWithDiscountSpinEdit.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
        this.supplierPriceWithDiscountSpinEdit.Properties.Mask.UseMaskAsDisplayFormat = true;
        this.supplierPriceWithDiscountSpinEdit.Properties.NullText = "0,00";
        this.supplierPriceWithDiscountSpinEdit.Properties.ValidateOnEnterKey = true;
        this.supplierPriceWithDiscountSpinEdit.Size = new System.Drawing.Size(100, 20);
        this.supplierPriceWithDiscountSpinEdit.TabIndex = 13;

尝试在绑定中使用
DataSourceUpdateMode.OnPropertyChanged
datasource更新模式,如下所示:

supplierPriceWithDiscountSpinEdit.DataBindings.Add("EditValue", productBindingSource, "SupplierPriceWithDiscount", true, DataSourceUpdateMode.OnPropertyChanged);
SpinEdit
editValueChangeing
事件处理程序中,更改对象属性,并让绑定完成它的工作

private void supplierDiscountPercetangeSpinEdit_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
    decimal price, percentage, calculatedPrice;

    price = (decimal)supplierPriceSpinEdit.EditValue;
    percentage = Convert.ToDecimal(e.NewValue, CultureInfo.InvariantCulture);

    calculatedPrice = Popust.Izracunaj(price, percentage);

    productBindingSource.SupplierPriceWithDiscount = calculatedPrice;

}

supplierPriceWithDiscountSpinEdit控件是否使用数据绑定?是的,十进制(18,2)也可以。请显示使用DiscountSpinedit控件绑定supplierPriceWithDiscountSpinEdit控件的代码。刚才更新了我的问题。当我在设置值后调用productBindingSource.EndEdit()时,这是正常的,但在保存更改之前我需要编辑更多字段。当我添加未绑定的spinEdit控件时,可以更新值
private void supplierDiscountPercetangeSpinEdit_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
    decimal price, percentage, calculatedPrice;

    price = (decimal)supplierPriceSpinEdit.EditValue;
    percentage = Convert.ToDecimal(e.NewValue, CultureInfo.InvariantCulture);

    calculatedPrice = Popust.Izracunaj(price, percentage);

    productBindingSource.SupplierPriceWithDiscount = calculatedPrice;

}