Как создать маску для ввода пользователем только отрицательных значений в компоненте DevExpress/WinForms TextEdit?
Я пытаюсь сделать это, но безуспешно:
Тот же вопрос, но это решение не работает
Я думаю, это ошибка.
Как создать маску для ввода пользователем только отрицательных значений в компоненте DevExpress/WinForms TextEdit?
Я пытаюсь сделать это, но безуспешно:
Тот же вопрос, но это решение не работает
Я думаю, это ошибка.
Вы можете использовать тип маски 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("-");
}
-
как ответ.
- person Abdellah OUMGHAR; 15.05.2016
Если вы работаете с числами, я предлагаю вам использовать SpinEdit. Чтобы разрешить прием только отрицательных чисел, используйте RepositoryItemSpinEdit.MaxValue и RepositoryItemSpinEdit.MinValue.
spinEdit1.Properties.MaxValue = -1;
spinEdit1.Properties.MinValue = decimal.MinValue;
Если вам нужен TextEdit, я предлагаю вам использовать маску Абделлы. Чтобы получить 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;
}
}
Попробуйте это решение:
В вашей форме загрузите:
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
" вашего 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");
}
}
Попробуй это:
txtEdit.Properties.Mask.EditMask = "\\d-";
Какую версию DX вы используете?