Wie finde ich heraus, ob das Ereignis "TextChanged" ausgelöst wird, wenn der Benutzer ein Textfeld eingibt oder myTextBox.Text programmgesteuert aufgerufen wird?

8
  

Gibt es eine Möglichkeit herauszufinden, ob das "TextChanged" -Ereignis ausgelöst wird, weil

     
  1. Der Benutzer tippt in ein Textfeld oder
  2.   
  3. der Programmierer namens myTextBox.Text="etwas"?
  4.   

Nur um Ihnen etwas Farbe zu geben, möchte ich nicht reagieren, wenn der Benutzer jeden Buchstaben in das Textfeld schreibt, so dass ich das Ereignis "Validated" verwende, um zu erkennen, wann der Benutzer fertig ist, damit ich reagieren kann. Das Problem ist, ich habe keine Möglichkeit zu fangen, wenn der Programmierer "myTextbox.Text=" etwas "tut. Die einzige Weise, die ich kenne, um Änderungen zu erfassen, ist, TextChanged zu verwenden, aber dann möchte ich nicht reagieren, wenn der Der Benutzer tippt jeden Buchstaben in das Textfeld ein. Irgendwelche Vorschläge?

    
Denis 09.03.2012, 15:38
quelle

4 Antworten

6

Ich rate, dass Sie ein UserControl erstellen, das andere Entwickler verwenden werden. Daher können "Endbenutzer" -Programmierer den Text programmgesteuert festlegen. Ich denke, die einfachste Sache wäre, @ jzworkmans Vorschlag zu folgen und eine Klasse zu erstellen, die den Texteigenschaften-Setzer außer Kraft setzt. Wie @vulkanino feststellt, sollten Sie das Ereignis Validieren wahrscheinlich erhöhen und abfangen.

%Vor%

Fügen Sie Ihrer Quelle den gleichen Handler zu den Validating- und ProgrammerChangedText-Ereignissen hinzu:

%Vor%     
Joshua Honig 09.03.2012, 16:09
quelle
8

Also in Ihrer "formatierten" Textfeld-Klasse:

%Vor%

Dies sollte Ihnen ermöglichen, den Text zu formatieren, wenn er von einem Programmierer geändert wird. Die Validierung der Benutzereingabe muss weiterhin im Validierungsereignis behandelt werden.

    
jzworkman 09.03.2012 16:00
quelle
-2

Wenn Sie eine Validierung durchführen möchten, verwenden Sie das Validating -Ereignis, nicht das Validated (das kommt, wenn es zu spät ist, um zu handeln).

Wie gesagt, was ist das real hier?

  

Dem Validating-Ereignis wird ein Objekt vom Typ CancelEventArgs übergeben. Ob   Wenn Sie feststellen, dass die Daten des Steuerelements nicht gültig sind, können Sie die Daten löschen   Überprüfen des Ereignisses, indem Sie die Cancel-Eigenschaft dieses Objekts auf true festlegen. Ob   Wenn Sie die Cancel-Eigenschaft nicht festlegen, wird Windows Forms davon ausgehen   Validierung für dieses Steuerelement erfolgreich und das Validated-Ereignis auslösen.

(http://msdn.microsoft.com/en-us/library/ms229603.aspx)

    
vulkanino 09.03.2012 15:50
quelle
-3
%Vor%     
NET Experts 09.03.2012 15:45
quelle

Tags und Links