2017-03-27 3 views
1

So stoppen Sie das Textfeld Verlassen des Ereignisses beim Klicken auf Linkable/Schaltfläche, während Textbox im Fokus war?Verhindern, dass ein TextBox-Ereignis beim Verlieren des Fokus verschwindet

Ich habe ein Textfeld TextBox1. Auf der Veranstaltung muss ich den Text validieren. Und als Text davon muss ich den Vorschlag des nächsten Textfelds TextBox2 auffüllen. Also in diesem Prozess, wenn ich auf ein Link-Label klicke [welches aus einem anderen Grund da ist], während TextBox1 im Fokus ist, es feuert Leave Event [was offensichtlich ist] und die Validierungsfunktion aufruft [was ist nicht aufgerufen werden soll - weil der Benutzer die Textbox nicht verlassen hat, nachdem er die Eingabe abgeschlossen hat - Er wurde durch einen verknüpfbaren Klick ausgelöst].

Ich habe versucht, abzubestellen Leave-Ereignis auf Link-Label-Click-Ereignis, aber das hilft nicht, wie Urlaub Ereignis an erster Stelle gefeuert wird.

was sollte in diesem Fall getan werden?

EDIT: Eintrag bezogenen Code,

ich früher gleichen Event-Handler für beide Textbox

private void txtBox_Leave(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     textBox.Visible = false; 

      #region TextBox 1 
      if (textBox.Equals(txtBox1)) 
      { 
       //Text Box 1 validation 
       //Populating Suggestions for TextBox2 
       //Passing focus on Textbox 2 
      } 
      #endregion 
      #region TextBox 2 
      else if (textBox.Equals(txtBox2)) 
      { 
       //Text Box 2 validation 
      } 
      #endregion 
    } 

Wie ich bereits erwähnt habe, Link-Label für verschiedene gibt es habe und ich kann nicht deaktivieren oder verstecken Sie es während der Operation auf Textfeld.

Eine Beobachtung ist, Wenn ich auf Link-Label klicken, Leave-Ereignis des Textfeldes erhöht erstes und danach Click-Ereignis von Link-Label-, so können wir jede Logik nicht durchführen (wie abzumelden leave Falles Textbox oder etwas anderes) auf Link-Label's click event - wie zu der Zeit, würde der Validierungsprozess durchgeführt werden, den wir nicht wollen.

+0

Sie WinForms verwenden, WPF, ...? (Sie sollten dies zur Tag-Liste hinzufügen). – samosaris

+0

@SamusArin Ich benutze WinForms. – Amit

+0

Können Sie bitte zugehörigen Code posten, insbesondere den TextBox leave Event Handler und die Validierungsroutine? – samosaris

Antwort

1

Wenn Sie auf link label klicken, wird die Steuerung fokussiert. Was Sie tun können, ist - finden Sie die fokussierte Kontrolle des Formulars in textbox1_leave Event-Handler. Wenn es nicht das link label ist, dann sollte nur die Funktionalität zum Füllen von Vorschlägen von textbox2 getan werden.

sollte diesen Link hilfreich sein für Sie konzentriert die Kontrolle über die Form, um herauszufinden - What is the preferred way to find focused control in WinForms app?

+0

Ja, ich habe auch etwas in dieser Richtung herausgefunden, es klingt so, als würde die Validierung bedingungslos vom Urlaubsereignis abgefeuert werden, möchte aber trotzdem den Code sehen, um sicher zu sein, dass nichts weiter passiert. – samosaris

+0

@ SamusArin, ja. Die Validierung wird bedingungslos ausgelöst. Und was auch immer Arpit vorgeschlagen hat, Es hilft mir in dieser Situation. – Amit

Verwandte Themen