C# 仅用于负数的掩码

C# 仅用于负数的掩码,c#,winforms,devexpress,devexpress-windows-ui,C#,Winforms,Devexpress,Devexpress Windows Ui,如何在DevXPress/WinForms TextEdit组件中为用户仅输入负值构建掩码 我正试图这样做,但没有成功: 我认为这是一个bug。您可以使用正则表达式掩码类型:-[0-9]*[.]{0,1}[0-9-]* 或者您可以像这样处理editValueChangeing事件: private void textEdit1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs

如何在DevXPress/WinForms TextEdit组件中为用户仅输入负值构建掩码

我正试图这样做,但没有成功:


我认为这是一个bug。

您可以使用正则表达式掩码类型:
-[0-9]*[.]{0,1}[0-9-]*

或者您可以像这样处理
editValueChangeing
事件:

private void textEdit1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
    e.Cancel = !e.NewValue.ToString().Contains("-");
}

如果你使用数字,我建议你使用。要将其限制为仅接受负数,请使用和属性

spinEdit1.Properties.MaxValue = -1;
spinEdit1.Properties.MinValue = decimal.MinValue;
如果你需要文本编辑,我建议你使用Abdellah的面具。要将TextEdit.EditValue作为数字而不是字符串,请使用事件

尝试以下解决方案:

在您的表单中加载:

TextEdit1.Properties.Mask.EditMask = "-#0.0000";
TextEdit1.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
TextEdit1.Properties.Mask.UseMaskAsDisplayFormat = false;
TextEdit1.Properties.EditFormat.FormatString = "-#0.0000";
并处理文本编辑的事件“
CustomDisplayText
”:

private void TextEdit1_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
          if ((e.Value != null) && !e.Value.Equals("")) 
           {
               e.DisplayText = Convert.ToDouble(e.Value).ToString("-#0.0000");
           }       
}
试试这个:

txtEdit.Properties.Mask.EditMask=“\\d-”


您使用的是哪个版本的DX?

如果您认为这是一个bug,您应该与DevEx谈谈,因为我们对此无能为力。但是,您确实在DevEx论坛上链接的帖子中阅读了对答案的后续评论,这也提供了一个替代解决方案,对吗?此掩码允许正数。请使用类似答案的
-
开始掩码。我尝试了此破解,但当我获得属性EditValue的值时,它是正数,我知道我可以进行另一次破解,将值更改为负值,但我不愿意这样做。此解决方案有效,但仍然使用破解。当用户键入值时,我需要自动分隔符。还是要感谢你为帮助盖伊所做的努力。有没有办法用文本编辑上的面具来做到这一点?(没有黑客)在这种情况下,我认为阿卜杜拉的面具是最合适的。我修改了我的答案,加入了一个附加的解决方案。
private void TextEdit1_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
          if ((e.Value != null) && !e.Value.Equals("")) 
           {
               e.DisplayText = Convert.ToDouble(e.Value).ToString("-#0.0000");
           }       
}