仅为负数的掩码

时间:2016-05-14 23:00:43

标签: c# winforms devexpress devexpress-windows-ui

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

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

enter image description here

Same question here, but this solution is not working

我认为这是一个错误。

4 个答案:

答案 0 :(得分:1)

您可以使用RegEx掩码类型:-[0-9]*[.]{0,1}[0-9-]*

enter image description here

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

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

答案 1 :(得分:1)

如果您使用数字,我建议您使用SpinEdit。要将其限制为仅接受负数,请使用RepositoryItemSpinEdit.MaxValueRepositoryItemSpinEdit.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?