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;
}