Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理值更改_C#_.net_Devexpress - Fatal编程技术网

C# 如何处理值更改

C# 如何处理值更改,c#,.net,devexpress,C#,.net,Devexpress,当通过处理事件更改第一个(SupplierDiscountPerceTangSpinedit)SpinEdit中的值时,我正在尝试在另一个(supplierPriceWithDiscountSpinEdit)SpinEdit控件上设置值: private void supplierDiscountPercetangeSpinEdit_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.Changing

当通过处理事件更改第一个(SupplierDiscountPerceTangSpinedit)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.
        }

    }
当我在控件上使用向上和向下按钮时,这个方法工作得很好,但在按键时抛出异常,并显示消息附加信息:指定的强制转换无效


问题可能是第行:
supplierDiscount=(十进制)e.NewValue

无法将字符串强制转换为十进制,必须进行分析

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

您已经在前一行回答了您的问题:

supplierPrice = Convert.ToDecimal(supplierPriceSpinEdit.EditValue);
您在处理程序
supplierDiscountPercetangeSpinEdit\u editValueChangeing
中,我只能假设它处理
SpinEdit
对象的
editValues
属性更改。因此,
e.NewValue
反映了该属性值。以上是处理相同的属性,因此自然您应该以相同的方式处理此属性:

supplierDiscount = Convert.ToDecimal(e.NewValue);

我假设它不喜欢
(decimal)e.NewValue
。您是否设置了一个
断点
来查看
e.NewValue
在该点是什么?假设ValueMember是decimal是否安全?跟踪并确定是哪一行。编写e.ToString()。来吧,在发布之前做一些调试。如果我按“1”,那么e.NewValue是“1.00”对象{String}。当使用控制按钮时,它应该是十进制的。但是解析必须是字符串,而e.NewValue是对象?来吧,应用自己的e.ToString()这是CultureInfo问题,必须设置
percentage=Convert.ToDecimal(e.NewValue,CultureInfo.InvariantCulture)