2016-05-18 23 views
0

Ich habe eine benutzerdefinierte TextBox Kontrolle und dieses Steuerelement hat eine Windows-Standard TextBox Kontrolle innerhalb davon. Da beim Drücken der Tabulatortaste ein untergeordnetes Steuerelement vorhanden ist, wird der Cursor nicht direkt auf das untergeordnete Steuerelement ausgerichtet. Es ist erforderlich, die Tabulatortaste zweimal zu drücken. So geht das erste Tab zum Elternteil und das zweite zum Kind. Wie kann ich es mit einer Tabpresse machen?Wie fokussiere ich das Kind-Steuerelement, wenn Tab gedrückt wird?

Individuelle TextBox ist:

class MyTextBox : Control 
    { 
     TextBox innerBox; 
     public MyTextBox() 
     { 
      //..... 
      innerBox = new TextBox(); 
      Controls.Add(innerBox); 
      innerBox.Parent = this; 
      innerBox.TabIndex = this.TabIndex; 
      //..... 
     } 
     //..... 
    } 
+2

Ändern Sie die Basisklasse Usercontrol machen. Oder ändere es in TextBox und füge keine "innerbox" hinzu. –

+0

Danke @HansPassant, es hat funktioniert. Würde es Ihnen etwas ausmachen zu erklären, warum 'UserControl' das Problem löst? –

+2

Es wurde entwickelt, um ein Container für untergeordnete Steuerelemente zu sein, die Control-Klasse nicht. Sehen Sie sich die [UserControl.WndProc() -Methode] (http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/UserControl.cs, f9a8bf95a2d28b6e) an, um zu sehen, wie es funktioniert. –

Antwort

0

Sie verwenden, um die tabindex Attribut, und das Kind als tabindex="1" angeben. dies würde das Markup für das Kind Kontrolle etwas ähnliches wie

<input type="textbox" runat="server" id="TB_id" tabindex="1"></input>

+0

Ich habe festgestellt, dass ich einen Tag Fehler in der Frage habe. Das tut mir leid. Eigentlich ist es eine Winform-Frage –

Verwandte Themen