2016-08-05 17 views
-1

Ich habe 2 Textfelder in einem Formular. Einer ist der total, der alle Produktliste hinzugefügt hat und ein anderer ist der tax. Nun, was ich tun möchte ist, geben Sie eine Menge auf tax, die sofort berechnen und auf total setzen sollte. Bitte hilf mir, es zu lösen.Welche Textboxereignisse sollten verwendet werden

Danke ... mehr Details ..

+0

[Control.LostFocus-Ereignis] (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.lostfocus%28v=vs.110%29.aspx?f=255&MSPPError= -2147217396)? – dasblinkenlight

+0

Hängt davon ab. Benötigt die Berechnung Zeit und kann die Benutzeroberfläche für etwa 0,5 Sekunden einfrieren, dann gehen Sie mit 'LostFocus'. Wenn es wirklich sehr schnell ist, würde 'TextChanged' – user3185569

+0

@x ... Text geändert mit jedem eingegebenen Zeichen rechnen. Wahrscheinlich nicht was der OP will. Verwenden Sie stattdessen "Validated". –

Antwort

2

Sie wahrscheinlich das Validated Ereignis wollen, nicht das TextChanged Ereignis. Wenn Sie TextChanged verwenden, wird das Ereignis nach jedem eingegebenen Zeichen ausgelöst, was wahrscheinlich nicht das ist, was Sie möchten. Höchstwahrscheinlich möchten Sie, dass es nur ausgelöst wird, wenn der Benutzer die Eingabe des Werts beendet hat und das Textfeld verlässt. Dies ist der Zweck des Ereignisses Validated.

Hinweis, LostFocus wird auch funktionieren, aber die Validated Veranstaltung ist für diesen Zweck entwickelt, weil Sie es mit Validating und abbrechen, wenn der Benutzer eingegeben einen ungültigen Wert kombinieren, wobei in diesem Fall Validated wird nie ausgelöst, aber LostFocus noch werden.

-1

Klingt so, als ob Sie eine Delegate-Methode erstellen müssen, die das Ereignis text changed behandelt.

In Ihrem Konstruktor/init:

TextBox1_TextChanged += FunctionToHandle; 

Innerhalb dieses Textes verändert Ereignis, sollten Sie zunächst überprüfen, ob Sie eine tatsächliche Zahl bekommen, einmal, dass man einfach tun, um Ihre Berechnung erfolgt, und fügen Sie die Immobilie das ist an Ihre gesamte Textbox gebunden.

+0

Text geändert würde mit jedem eingegebenen Zeichen berechnen. Wahrscheinlich nicht was der OP will. –

+0

deshalb habe ich zuerst validiert. – tjones0808

+0

Das TextChanged-Ereignis wird * vor * Validieren ausgelöst. Wenn Sie TextChanged verwenden, wird es ** jedes Mal ausgelöst, wenn ein Zeichen eingegeben wird **. Selbst wenn Ihr Delegierter "validiert" (was nicht der richtige Ort dafür ist), wird das Ereignis beim nächsten eingegebenen Zeichen immer noch ausgelöst. UND, das * validierte * Ereignis wird am Ende noch Feuern. Es gibt keine Möglichkeit, dies zu stornieren, außer das Ereignis * validing * zu verwenden. –

Verwandte Themen