2014-01-28 71 views
-1

我試圖通過處理事件改變第一(supplierDiscountPercetangeSpinEdit)SpinEdit值時,另一個(supplierPriceWithDiscountSpinEdit)SpinEdit控制設定值:如何處理值改變

private void supplierDiscountPercetangeSpinEdit_EditValueChanging(object sender, 
     DevExpress.XtraEditors.Controls.ChangingEventArgs e) 
    { 
     try 
     { 
      decimal supplierPrice, supplierDiscount, supplierPriceWithDiscount; 

      supplierPrice = Convert.ToDecimal(supplierPriceSpinEdit.EditValue); 
      supplierDiscount = (decimal)e.NewValue; 
      supplierPriceWithDiscount = Discount.DoMath(
       supplierPrice, supplierDiscount); 

      supplierPriceWithDiscountSpinEdit.EditValue = Convert.ToDecimal(
       supplierPriceWithDiscount); 
     } 
     catch 
     { 
      throw; // Additional information: Specified cast is not valid. 
     } 

    } 

這種方法工作的很好,當我使用Up &控制上的向下按鈕,但在按鍵異常時顯示消息其他信息:指定的轉換無效。

也許問題是線:supplierDiscount = (decimal)e.NewValue;

+1

我認爲它不喜歡'(十進制)e.NewValue'。你是否設置了一個「斷點」來查看「e.NewValue」在那個點上? – KSdev

+0

假設ValueMember是十進制是否安全? –

+0

跟蹤並確定哪一行。寫e.ToString()。在發佈之前先做一些調試。 – Paparazzi

回答

0

不能施放字符串轉換爲十進制必須分析

decimal supplierDiscount = decimal.Parse("1.00"); 
+0

但解析必須是字符串和e.NewValue是對象嗎? – Carlo

+0

來吧應用自己e.ToString() – Paparazzi

+0

這是CultureInfo的問題,必須設置百分比= Convert.ToDecimal(e.NewValue,CultureInfo.InvariantCulture);' – Carlo

0

你已經回答了你的問題上一行:

supplierPrice = Convert.ToDecimal(supplierPriceSpinEdit.EditValue); 

您在處理器supplierDiscountPercetangeSpinEdit_EditValueChanging,我只能假設處理EditValue屬性更改SpinEdit物體。因此e.NewValue反映了該屬性值。以上是處理相同的屬性,所以自然應該處理這一個相同的方式:

supplierDiscount = Convert.ToDecimal(e.NewValue);