2009-08-24 3 views
2

NumericUpDown scheint nur mit Ganzzahlen umzugehen. Wie kann ich es ändern (?), Also kann ich Doppelwerte als Wert und Inkrement verwenden?WinForms: NumericUpDown (.NET CF 3.5) und reelle Zahlen

+0

Muss dies als Kommentar hinzufügen: NumericUpDown ist wahrscheinlich die hässlichste, klirrigste, wertloseste Kontrolle in der Windows-Geschichte. Ihre Kunden werden Sie lieben, wenn Sie mit anderen Möglichkeiten der Eingabe von Zahlen kommen das Eingeben von Nummern mit dem SIP (im Tastaturmodus) ist ein Problem, aber wenn Sie die Frage "Wie gebe ich am besten Zahlen in Windows Mobile ein?", poste ich das schönste Stück C# -Code, das ich je gesehen habe – MusiGenesis

+1

Ich habe Slidebars neben ihnen auf dem Desktop verwendet, um es einfacher zu machen. –

+0

@MusiGenesis: http://stackoverflow.com/questions/1324559/whats-the-best-way-to-enter-numbers-in-windows -mobile-net-cf-3-5/1324599 # 1324599;) –

Antwort

0

Es gibt eine Eigenschaft namens DecimalPlaces. Setzen Sie es auf etwas reifer als 0 und es wird Ihnen ermöglichen, mit Dezimalzahlen zu arbeiten

+1

Funktioniert nicht auf CF. –

+0

Es scheint keine "DecimalPlaces" im CompactFramework zu geben –

+0

oops, sorry bemerkte nicht __CF__ –

2

NumericUpDown arbeitet mit Dezimal-Typen, ist aber nur Integer auf dem kompakten Framework. Dies ist eine Beschränkung der Klasse auf CF.

Es gibt jedoch eine CodeProject UserControl, die eine Implementierung für CF bietet.

+0

Gibt es irgendwo einen Workaround oder eine kostenlose Alternative? –

+0

Ja. Ich habe es meiner Antwort hinzugefügt. –

+0

Danke. Ich habe es gesehen. Sein Textkasten ist mit zwei Bildern und einem Timer (!!) vermischt. Ich habe es getestet und es bekommt den Input nicht in 50% der Fälle. Ich klicke und nichts passiert. –

2

Ich benutze nur ein Textfeld und überschreibe dann das OnKeyPress-Ereignis. Dieser Code hat in der Vergangenheit für mich funktioniert, aber ist nur gut für Gruppen, die 1234.56 schreiben, nicht 1234.56.

0

Mein Code ist nur ein Blockcode hier ist es (mit Compact Framework getestet);

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == '.') 
     { 
      if (((TextBox)sender).Text.IndexOf('.') > -1) 
      { 
       e.Handled = true; 
      } 
      else if (((TextBox)sender).Text.Length == 0) 
      { 
       e.Handled = true; 
      } 
     } 
     else if (!char.IsDigit(e.KeyChar)) 
     { 
      e.Handled = true; 
     } 

     if (e.KeyChar == '\b') // backspace silme tuşunun çalıması için gerekli 
     { 
      e.Handled = false; 
     } 

     base.OnKeyPress(e); 
    } 

übrigens hasse ich Compact Framework. Weil es zu begrenzt ist! Aber ich muss :(