none
Aufruf eines UserControls und setzen des Focus in eine TextBox

    Question

  • Hallo!

    ich rufe UserControls auf,

                        uc = new UcCreateKitplate(this);
                        scrKitplate.Content = uc;

    in diesen UserControls befinden sich TextBoxen.

    <TextBox Grid.Row="1" Grid.Column="2" Name="tboLength" TextChanged="tbo_TextChanged" />

    Per C# setzte ich den Fokus auf eine der TextBoxen.

                tbo.Focus();
                tbo.Select(tbo.Text.Length, 0);

    (Per Breakpoint habe ich kontrolliert, dass dieser Code auch wirklich aufgerufen wird.)

    Aber was passiert ist:
    In der Textbox steht rechts von den vorgegebenen Zeichen der Senkrechte Strich des Cursors, blinkt aber nicht. Wenn ich per Tastatur eine Eingabe ausführen will, passiert nichts. Der Fokus befindet sich nicht in der Textbox (zumindest nicht so, wie ich es kenne). 
    Wenn ich einmal(!) die Tabtaste betätige, so ist der Fokus dann wirklich in der TextBox.

    Was ist da los? Kann mir das jemand sagen? Wie muss ich den Fokus setzen, damit man direkt nach dem Öffnen (Anzeigen) des UserControls per Tastatur Eingaben in die TextBox machen kann?


    www.mehlhop.com

    Monday, February 10, 2014 11:32 AM

Answers

  • Hi Frank,

    ich hab es jetzt bei mir ausprobiert und es Funktioniert ohne Probleme.

    Wobei meine Textbox (Laut MSDM die standart Textbox) keine eigenschaft Content hat.

    Setzt du vielicht noch an einer anderen Stelle den Focus. Z.B. im Übergerordneten Controll (einfach mal nach .Focus suchen, bzw. dem XML entsprech dafür).

    MFG

    Björn

    • Marked as answer by frank me Wednesday, February 12, 2014 1:35 PM
    Monday, February 10, 2014 7:12 PM

All replies

  • Hi Frank,

    meine erte Vermutung ist du setzt den Focus auf das Controll (tbo) vor der Textbox(tboLength), mit Tab wird dann die Textbox als nächstes Controll ausgewählt.

    MFG

    Björn

    Monday, February 10, 2014 11:45 AM
  • Hallo Björn,

    nein, bei tbo handelt es sich um tboLength.
    Da ich im Codebehind tboLength.Content = wert setze,
    wird der TextChanged-EventHandler aufgerufen
    und darin sage ich TextBox tbo = (TextBox) sender;
    dann wird auf genau jene TextBox der Fokus gesetzt
    (per Breakpoint überprüft).


    www.mehlhop.com

    Monday, February 10, 2014 11:52 AM
  • Hi Frank,

    ich hab es jetzt bei mir ausprobiert und es Funktioniert ohne Probleme.

    Wobei meine Textbox (Laut MSDM die standart Textbox) keine eigenschaft Content hat.

    Setzt du vielicht noch an einer anderen Stelle den Focus. Z.B. im Übergerordneten Controll (einfach mal nach .Focus suchen, bzw. dem XML entsprech dafür).

    MFG

    Björn

    • Marked as answer by frank me Wednesday, February 12, 2014 1:35 PM
    Monday, February 10, 2014 7:12 PM
  • Danke für die Antworten.

    Es scheint so, als wenn 

    TextBox tbo = (TextBox) sender;            
    tbo.Focus();
    tbo.Select(tbo.Text.Length, 0);

    nicht funktioniert (bei mir!).

    Hingegen ein direkter Aufruf

    tboSpecific.Focus(); ...
    wird ausgeführt so wie es zu erwarten ist.


    www.mehlhop.com

    Wednesday, February 12, 2014 1:34 PM