2016-05-14 25 views
1

Wie erstellt man eine Maske für den Benutzer nur negative Werte in DevExpress/WinForms TextEdit Komponente?Maske für nur negative Zahlen

Ich versuche, dies zu tun, aber ohne Erfolg:

enter image description here

Same question here, but this solution is not working

Ich denke, es ist ein Fehler ist.

+1

Wenn Sie glauben, dass es ein Fehler * ist, sollten Sie mit DevEx sprechen, weil wir nichts dagegen tun können. Wie auch immer, du * hast * die Follow-up-Kommentare zu der Antwort in dem Beitrag gelesen, den du in den DevEx-Foren verlinkt hast, was auch eine alternative Lösung bietet, oder? –

Antwort

1

können Sie RegEx verwenden Maskentyp: -[0-9]*[.]{0,1}[0-9-]*

enter image description here

oder Sie können EditValueChanging Veranstaltung wie diese handhaben:

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

Diese Maske erlaubt positive Zahlen. –

+0

ok, ich habe verstanden. –

+0

beginnen Maske mit '-' wie Antwort. –

1

Wenn Sie mit Zahlen arbeiten, empfehle ich Ihnen SpinEdit verwenden. Verwenden Sie die RepositoryItemSpinEdit.MaxValue und RepositoryItemSpinEdit.MinValue Eigenschaften, um es zu beschränken, nur negative Zahlen zu akzeptieren.

spinEdit1.Properties.MaxValue = -1; 
spinEdit1.Properties.MinValue = decimal.MinValue; 

Wenn Sie TextEdit benötigen, schlage ich vor, Sie verwenden Abdellahs Maske. Damit Sie TextEdit.EditValue als Zahl statt als Zeichenfolge verwenden, verwenden Sie das Ereignis 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; 
    } 
} 
+0

Gibt es eine Möglichkeit, dies mit der Maske auf TextEdit zu tun? (ohne Hacks) –

+0

In diesem Fall finde ich Abdellahs Maske am besten geeignet. Ich habe meine Antwort geändert, um eine zusätzliche Lösung hinzuzufügen. –

+0

Warum funktioniert SpinEdit nicht für Sie? –

0

Versuchen Sie, diese Lösung:

In Ihrer Form Last:

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"; 

und Händel das Ereignis "CustomDisplayText" Ihrer 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"); 
      }  
} 
0

Try this:

txtEdit.Properties.Mask.EditMask = "\\d-";

Welche Version von DX verwenden Sie?