当我不知道导致这种行为的原因时,我很难解释问题,但我会尝试。
在我的表单上有两个Devexpress SpinEdit controls
(SpinEdit
类表示一个控件,它由一个文本编辑器和一对旋转按钮组成,用户可以单击这些旋钮来调整值,就像使用{{ 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;
}
答案 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;
}