2014-01-29 3 views
0

이 문제의 원인을 모르는 경우 문제점을 설명하기는 어렵지만 시도 할 것입니다. 내 양식에휴가 또는 값 변경시 제어 값 설정

Devexpress SpinEdit controls합니다 (SpinEdit 클래스는 텍스트 편집기로 구성되어 제어와 사용자가 단지 NumericUpDown를 사용하여 같은 값을 조정하기 위해 클릭 할 수있는 스핀 버튼 한 쌍을 나타냅니다)

문제가 있습니다 스핀 편집 1 값 변경 이벤트를 처리 한 후 두 번째 스핀 편집 값을 설정할 수 없습니다.

형태로드의 두 컨트롤이 도착하면 데이터베이스에서 값 (소수점 18,2)

하자 말 :

priceSpinEdit 값이 100,00

discountSpinedit 값이 10,00

입니다 사용자가 할인율을 변경할 때 할인율로 가격을 계산하고 가격을 가격에 입력해야합니다 .WithDiscountSpinEdit

아베 코드 그 초점이 내가 계산 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; 

    } 

동안 작업의 잘.

나는 내가 간단한 버튼 클릭이 점을 넣어 시도 후 반대 할 값을 작성해야하지만, 생각했다

과 작업의 (값 스틱의) 가격 정확한 값을 계산할 때 왜

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

그래서 내 질문은 두 번째 spinEdit에 표시되고 포커스를 잃으면 사라집니다.

죄송합니다. 긴 질문에 대해 사과드립니다. 필요한 경우 추가 정보를 추가 할 수 있습니다.

편집 :

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

을 그리고 SpinEditEditValueChanging 이벤트 처리기에서, 객체 속성을 변경 : 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; 
+0

데이터 바인딩은 supplierPriceWithDiscountSpinEdit 컨트롤에서 사용합니까? – SidAhmed

+0

예, 십진수 (18,2) – Carlo

+0

supplierPriceWithDiscountSpinEdit 컨트롤을 바인딩 할 때 코드를 표시 할 수 있습니까? – SidAhmed

답변

1

시도하여 지금과 같은 바인딩에 DataSourceUpdateMode.OnPropertyChanged 데이터 소스 업데이트 모드를 사용하는 구속력있는 일을하도록하십시오.

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; 

}