如何在DevExpress / WinForms TextEdit组件中为用户输入负值构建掩码?
我正在尝试这样做,但没有成功:
Same question here, but this solution is not working
我认为这是一个错误。
答案 0 :(得分:1)
您可以使用RegEx掩码类型:-[0-9]*[.]{0,1}[0-9-]*
或者您可以像这样处理EditValueChanging
事件:
private void textEdit1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
e.Cancel = !e.NewValue.ToString().Contains("-");
}
答案 1 :(得分:1)
如果您使用数字,我建议您使用SpinEdit。要将其限制为仅接受负数,请使用RepositoryItemSpinEdit.MaxValue和RepositoryItemSpinEdit.MinValue属性。
spinEdit1.Properties.MaxValue = -1;
spinEdit1.Properties.MinValue = decimal.MinValue;
如果你需要TextEdit,我建议你使用Abdellah的面具。因此,您将TextEdit.EditValue作为数字而不是字符串,请使用ParseEditValue事件。
textEdit1.Properties.Mask.EditMask = "-[0-9]*[.]{0,1}[0-9]*";
textEdit1.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx;
private void textEdit1_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e) {
if (e.Value is string) {
e.Value = double.Parse(e.Value.ToString());
e.Handled = true;
}
}
答案 2 :(得分:0)
试试这个解决方案:
在表格中加载:
CustomDisplayText
并对你的textEdit:
的事件“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");
}
}
”进行处理
{{1}}
答案 3 :(得分:0)
试试这个:
txtEdit.Properties.Mask.EditMask = "\\d-";
您使用的是哪个版本的DX?