2016-08-05 10 views
0

Ich habe zwei Textfelder nämlich T1 und T2.The Validierung ist ein wenig wie, T1-Werte annehmen kann nur weniger als 10.FOCUS und unfokussiert in Xamarin FORMS

Lassen Sie uns sagen, der Benutzer 20 in T1 eintritt. Der Fokus liegt immer noch auf T1. Jetzt tippt der Benutzer auf T2 (Fokus auf T2).

Was ich jetzt tun muss ist, dass, wenn der Wert in T1 nicht weniger als 10 ist. Ich muss den aktuellen Wert in T1 (d. H. 20) entfernen und den Fokus zurück auf T1 setzen.

Wie erreiche ich das in Formularen?

T2.Focused += (object sender, FocusEventArgs e) => { 

      try { 
       if (T1.text > 10) { 
        T1.Text = ""; 
        T1.Focus(); 
       } 
      } catch { 
       Console.WriteLine ("T2.Focused CAUGHT"); 
      } 
     }; 
+0

Könnten Sie schreiben bitte dein Code-Snippet? – Gar

+0

Der Fokus liegt einfach nicht auf T1. Fokus von überall wo verschwindet und die numerische Tastatur verschwindet. – MainakChoudhury

+0

'T1.text' ist eine Zeichenkette, wie vergleichen Sie' T1.text> 10'? –

Antwort

0

Sie können das Focused Ereignis:

T2.Focused += (s,e) => 
{ 
    if(int.Parse(T1.Text) > 10) 
    { 
     T1.Focus(); 
    } 
} 

aber ein besserer Weg, die Completed event

T1.Completed += (s,e) => 
{ 
    if(int.Parse(T1.Text) > 10) 
    { 
     T1.Focus(); 
    } 
} 
+0

Das T2.Focused-Ereignis wird als "Fein" bezeichnet, der Fokus wird jedoch nicht auf T1 übertragen und keine der Textfelder hat den Fokus. Das abgeschlossene Ereignis wird nur aufgerufen, wenn ich auf die Fertig-Schaltfläche in meiner Gerätetastatur klicke und nicht, wenn ich mich auf ein anderes Textfeld konzentriere. @Rohit – MainakChoudhury

+0

Sie können versuchen, es auf dem UI-Thread auszuführen, um zu sehen, ob es nicht das Hintergrundthread-Problem ist. –

0

Versuchen Sie einfach zu verwenden sein:

if (T1.Text <10) 
{ 
T2.Select(); 
} 
else 
{ 
T1.Clear(); 
}