如果不存在十进制数字,则隐藏小数点

时间:2013-11-16 16:04:45

标签: devexpress xtragrid

var qtyMaskedTextEdit = new RepositoryItemTextEdit();
qtyMaskedTextEdit.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
qtyMaskedTextEdit.Mask.UseMaskAsDisplayFormat = true;
qtyMaskedTextEdit.Mask.EditMask = "#,###.##;(#,###.##)";
grid.RepositoryItems.Add(qtyMaskedTextEdit);
column.ColumnEdit = qtyMaskedTextEdit;

以下格式:"#,###.##;(#,###.##)"将123显示为123.(末尾带小数点)

如何摆脱这个小数点?

1 个答案:

答案 0 :(得分:0)

解决方案1:
派生控件的创建对我有用,可以进行下一步修改:

在构造函数中:

CustomDisplayText += OnCustomDisplayText;

订阅后,用空字符串替换逗号/点号:

private void OnCustomDisplayText(object sender, CustomDisplayTextEventArgs e)
        {
            if (MaskType == DevExpress.Xpf.Editors.MaskType.Numeric &&
                MaskUseAsDisplayFormat &&
                !String.IsNullOrEmpty(e.DisplayText) &&
                e.DisplayText.Last().ToString() == NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)
            {
                e.DisplayText = e.DisplayText.Replace(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator, string.Empty);
                e.Handled = true;
            }
        }
编辑模式中的

MINUS:仍然可以看到逗号/点

解决方案2:我发现只有十进制类型才会出现此问题,这是.NET问题,而不是devexpress。例如,使用double,就没有这样的问题。

在1m(m =十进制)数字上有一个十进制除以数字,然后尾随零消失。

public static class NumberExtensions
{
    public static decimal RemoveTrailingZeros(this decimal number)
    {
        return (number / 1m);
    }
}

然后在View Model或Model中使用它,例如

public decimal Number {get {return number.RemoveTrailingZeros(); }}

P.S。仍然不明白在1m划分后到底发生了什么,这里是划分前和后面的字节测试:
1m division