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