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

时间:2014-01-29 10:47:27

标签: c# .net devexpress

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

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

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

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

让我们说:

priceSpinEdit值为100,00

discountSpinedit值为10,00

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

我的代码运行良好

NumericUpDown

虽然焦点设置在我正在进行计算的控制中,supplierPriceWithDiscountSpinEdit显示正确的计算值,但在此控制失去焦点之后,将焦点值设置为从数据库加载的值。

我在想我需要为对象写值,但后来我试着把它放到简单的按钮点击它工作了(价值棒)

    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;

    }

所以我的问题是为什么当计算价格正确值显示在第二个spinEdit中并且在失去焦点后它消失了。

很抱歉很长时间的问题,如有必要,我可以添加更多信息。

编辑:spinedit控制

    private void button1_Click(object sender, EventArgs e)
    {
        decimal price, percentage, calculatedPrice;

        price = (decimal)supplierPriceSpinEdit.EditValue;
        percentage = (decimal)supplierDiscountPercetangeSpinEdit.EditValue;

        calculatedPrice = Popust.Izracunaj(price, percentage);

        supplierPriceWithDiscountSpinEdit.EditValue = calculatedPrice;
    }

1 个答案:

答案 0 :(得分:1)

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

supplierPriceWithDiscountSpinEdit.DataBindings.Add("EditValue", productBindingSource, "SupplierPriceWithDiscount", true, DataSourceUpdateMode.OnPropertyChanged);

SpinEdit EditValueChanging事件处理程序中,更改object属性,让绑定执行它。

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;

}