Devexpress 如果没有小数位数,则隐藏小数点

Devexpress 如果没有小数位数,则隐藏小数点,devexpress,xtragrid,Devexpress,Xtragrid,以下格式:“#,#######(#,####.#”)”将123显示为123。(末尾有小数点) 如何去掉这个小数点?解决方案1: 创建派生控件对我有效,并进行了以下修改: 在构造函数中: var qtyMaskedTextEdit = new RepositoryItemTextEdit(); qtyMaskedTextEdit.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric; qtyMaskedTextEdit.Mask.

以下格式:
“#,#######(#,####.#”)”
将123显示为123。(末尾有小数点)


如何去掉这个小数点?

解决方案1:
创建派生控件对我有效,并进行了以下修改:

在构造函数中:

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;
订阅后,用空字符串替换逗号/点符号:

CustomDisplayText += OnCustomDisplayText;
减号:在编辑模式下逗号/点仍然可见

解决方案2:我发现这个问题只发生在十进制类型上,这是.NET问题,而不是develxpress。例如,对于double,就不存在这样的问题

有一种将十进制数除以1m(m=十进制数)的方法,在该方法之后,尾随的零将消失

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;
            }
        }
然后在视图模型或模型中使用它,例如

public static class NumberExtensions
{
    public static decimal RemoveTrailingZeros(this decimal number)
    {
        return (number / 1m);
    }
}
p.S.仍然不明白1m除法后到底发生了什么,下面是对除法前后字节的测试:

试着用一个简单的“#,##”
public decimal Number {get {return number.RemoveTrailingZeros(); }}