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.(末尾带小数点)
如何摆脱这个小数点?
答案 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划分后到底发生了什么,这里是划分前和后面的字节测试: