Você não pode definir o foco para os controles filho de um controle de usuário, usando a tecla TAB

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 820628
Sintomas
No Microsoft Visual Basic .NET ou Microsoft Visual Basic 2005, crie um formulário do Windows que tenha um controle de usuário e, em seguida, você definir a propriedade ParadaDeTabulação do controle de usuário como False ( Falso no Microsoft Visual translation from VPE for Csharp. NET). Quando você executa o aplicativo, você não pode definir o foco nos controles filho do controle de usuário, pressionando a tecla TAB. Esse comportamento ocorre mesmo quando a propriedade TabStop é definida como True ( true no Visual translation from VPE for Csharp. NET) para os controles filho.
Causa
A classe UserControl herda da classe ContainerControl . A classe GroupBox , Painel de classe e TabControl classe herdam a classe Control . Microsoft .NET framework interpreta a propriedade ParadaDeTabulação para controles de usuário de maneira diferente e ele interpreta a propriedade ParadaDeTabulação para GroupBox , painel e TabControl . Devido à maneira como classes interpreta a propriedade ParadaDeTabulação , esse comportamento pode parecer inconsistente.
Como Contornar
Para contornar esse problema, defina a propriedade TabStop do controle de usuário para True . Para fazer isso, execute as seguintes etapas:
  1. No Visual Basic .NET ou Visual Basic 2005, abra Form1.vb (no Visual translation from VPE for Csharp NET, Form1.cs aberto).
  2. Localizar e substituir o código a seguir.

    Visual Basic .NET ou código do Visual Basic 2005

    Substituir
    MyControl.TabStop = False
    com
    MyControl.TabStop = True
    código .NET translation from VPE for Csharp Visual

    Substituir
    MyControl.TabStop = false;
    com
    MyControl.TabStop = true;
  3. No menu Debug , clique em Iniciar para executar o aplicativo.

    Form1 é exibida.
  4. Pressione a tecla TAB várias vezes para definir o foco para os botões no Form1.

    Você pode definir o foco para os dois botões que estão os controles de filho MyControl .
Observação Essas etapas sejam baseiam a amostra de "Mais informações" seção deste artigo. Portanto, o código e os nomes de arquivo nestas etapas podem diferir do seu código e os nomes de arquivo.
Situação
Esse comportamento é por design.
Mais Informações

Etapas para reproduzir o comportamento

Use Visual Basic. NET, Visual Basic 2005 ou Visual translation from VPE for Csharp .NET para reproduzir o comportamento, da seguinte maneira:
  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Tipos de projeto .

    Observação No Visual Studio 2005, clique em Visual Basic .
  4. Clique em Windows Application em modelos .
  5. Nome do projeto TabStopDemo e, em seguida, clique em OK .
  6. Por padrão, é criado o Form1.
  7. No menu Exibir , clique em código .
  8. Substitua o código existente com o código a seguir.

    Visual Basic .NET ou código do Visual Basic 2005
    Public Class Form1    Inherits System.Windows.Forms.Form    Private GroupBox1 As System.Windows.Forms.GroupBox    Private Button1 As System.Windows.Forms.Button    Private Button2 As System.Windows.Forms.Button    Private Panel1 As System.Windows.Forms.Panel    Private Button3 As System.Windows.Forms.Button    Private Button4 As System.Windows.Forms.Button    Private TabControl1 As System.Windows.Forms.TabControl    Private TabPage1 As System.Windows.Forms.TabPage    Private Button5 As System.Windows.Forms.Button    Private Button6 As System.Windows.Forms.Button    Private components As System.ComponentModel.IContainer    Public Sub New()        MyBase.New()        InitializeComponent()        Dim MyControl As New UserControl1        MyControl.Location = New Point(225, 150)        '        ' Set TabStop equal to False        '        MyControl.TabStop = False        Me.Controls.Add(MyControl)    End Sub    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)        If disposing Then            If Not (components Is Nothing) Then                components.Dispose()            End If        End If        MyBase.Dispose(disposing)    End Sub    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()        components = New System.ComponentModel.Container        Me.GroupBox1 = New System.Windows.Forms.GroupBox        Me.Button2 = New System.Windows.Forms.Button        Me.Button1 = New System.Windows.Forms.Button        Me.Panel1 = New System.Windows.Forms.Panel        Me.Button4 = New System.Windows.Forms.Button        Me.Button3 = New System.Windows.Forms.Button        Me.TabControl1 = New System.Windows.Forms.TabControl        Me.TabPage1 = New System.Windows.Forms.TabPage        Me.Button6 = New System.Windows.Forms.Button        Me.Button5 = New System.Windows.Forms.Button        Me.GroupBox1.SuspendLayout()        Me.Panel1.SuspendLayout()        Me.TabControl1.SuspendLayout()        Me.TabPage1.SuspendLayout()        Me.SuspendLayout()        '        ' GroupBox1        '        Me.GroupBox1.Controls.Add(Me.Button2)        Me.GroupBox1.Controls.Add(Me.Button1)        Me.GroupBox1.Location = New System.Drawing.Point(32, 32)        Me.GroupBox1.Name = "GroupBox1"        Me.GroupBox1.Size = New System.Drawing.Size(176, 72)        Me.GroupBox1.TabIndex = 0        '        ' Set TabStop equal to False        '        Me.GroupBox1.TabStop = False        Me.GroupBox1.Text = "GroupBox1"        '        ' Button2        '        Me.Button2.Location = New System.Drawing.Point(96, 24)        Me.Button2.Name = "Button2"        Me.Button2.Size = New System.Drawing.Size(64, 24)        Me.Button2.TabIndex = 1        '        ' Set TabStop equal to True        '        Me.Button2.TabStop = True        Me.Button2.Text = "Button2"        '        ' Button1        '        Me.Button1.Location = New System.Drawing.Point(16, 24)        Me.Button1.Name = "Button1"        Me.Button1.Size = New System.Drawing.Size(64, 24)        Me.Button1.TabIndex = 0        '        ' Set TabStop equal to True        '        Me.Button1.TabStop = True        Me.Button1.Text = "Button1"        '         ' Panel1        '         Me.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle        Me.Panel1.Controls.Add(Me.Button4)        Me.Panel1.Controls.Add(Me.Button3)        Me.Panel1.Location = New System.Drawing.Point(232, 40)        Me.Panel1.Name = "Panel1"        Me.Panel1.Size = New System.Drawing.Size(152, 64)        Me.Panel1.TabIndex = 1        '        ' Set TabStop equal to False        '        Me.Panel1.TabStop = False        '         ' Button4        '         Me.Button4.Location = New System.Drawing.Point(80, 16)        Me.Button4.Name = "Button4"        Me.Button4.Size = New System.Drawing.Size(56, 24)        Me.Button4.TabIndex = 1        '        ' Set TabStop equal to True        '        Me.Button4.TabStop = True        Me.Button4.Text = "Button4"        '         ' Button3        '         Me.Button3.Location = New System.Drawing.Point(8, 16)        Me.Button3.Name = "Button3"        Me.Button3.Size = New System.Drawing.Size(56, 24)        Me.Button3.TabIndex = 0        '        ' Set TabStop equal to True        '        Me.Button3.TabStop = True        Me.Button3.Text = "Button3"        '         ' TabControl1        '         Me.TabControl1.Controls.Add(Me.TabPage1)        Me.TabControl1.Location = New System.Drawing.Point(24, 128)        Me.TabControl1.Name = "TabControl1"        Me.TabControl1.SelectedIndex = 0        Me.TabControl1.Size = New System.Drawing.Size(184, 96)        Me.TabControl1.TabIndex = 2        '        ' Set TabStop equal to False        '        Me.TabControl1.TabStop = False        '         ' TabPage1        '         Me.TabPage1.Controls.Add(Me.Button6)        Me.TabPage1.Controls.Add(Me.Button5)        Me.TabPage1.Location = New System.Drawing.Point(4, 22)        Me.TabPage1.Name = "TabPage1"        Me.TabPage1.Size = New System.Drawing.Size(176, 70)        Me.TabPage1.TabIndex = 0        Me.TabPage1.Text = "TabPage1"        '         ' Button6        '         Me.Button6.Location = New System.Drawing.Point(96, 16)        Me.Button6.Name = "Button6"        Me.Button6.Size = New System.Drawing.Size(56, 24)        Me.Button6.TabIndex = 1        '        ' Set TabStop equal to True        '        Me.Button6.TabStop = True        Me.Button6.Text = "Button6"        '         ' Button5        '         Me.Button5.Location = New System.Drawing.Point(8, 16)        Me.Button5.Name = "Button5"        Me.Button5.Size = New System.Drawing.Size(56, 24)        Me.Button5.TabIndex = 0        '        ' Set TabStop equal to True        '        Me.Button5.TabStop = True        Me.Button5.Text = "Button5"        '         ' Form1        '         Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)        Me.ClientSize = New System.Drawing.Size(440, 330)        Me.Controls.Add(Me.TabControl1)        Me.Controls.Add(Me.Panel1)        Me.Controls.Add(Me.GroupBox1)        Me.Name = "Form1"        Me.Text = "Form1"        Me.GroupBox1.ResumeLayout(False)        Me.Panel1.ResumeLayout(False)        Me.TabControl1.ResumeLayout(False)        Me.TabPage1.ResumeLayout(False)        Me.ResumeLayout(False)    End Sub    Public Class UserControl1        Inherits System.Windows.Forms.UserControl        Private Button1 As System.Windows.Forms.Button        Private Button2 As System.Windows.Forms.Button        Private components As System.ComponentModel.IContainer        Public Sub New()            InitializeComponent()        End Sub        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)            If disposing Then                If Not (components Is Nothing) Then                    components.Dispose()                End If            End If            MyBase.Dispose(disposing)        End Sub        Private Sub InitializeComponent()            Me.Button1 = New System.Windows.Forms.Button            Me.Button2 = New System.Windows.Forms.Button            Me.SuspendLayout()            '             ' Button1            '             Me.Button1.Location = New System.Drawing.Point(16, 16)            Me.Button1.Name = "Button1"            Me.Button1.Size = New System.Drawing.Size(56, 24)            Me.Button1.TabIndex = 0            '            ' Set TabStop equal to True            '            Me.Button1.TabStop = True            Me.Button1.Text = "Button1"            '             ' Button2            '             Me.Button2.Location = New System.Drawing.Point(96, 16)            Me.Button2.Name = "Button2"            Me.Button2.Size = New System.Drawing.Size(56, 24)            Me.Button2.TabIndex = 1            '            ' Set TabStop equal to True            '            Me.Button2.TabStop = True            Me.Button2.Text = "Button2"            '             ' UserControl1            '             Me.BackColor = System.Drawing.Color.FromArgb(255, 255, 255)            Me.Controls.AddRange(New Control() {Me.Button1, Me.Button2})            Me.Name = "UserControl1"            Me.Size = New System.Drawing.Size(176, 56)            Me.ResumeLayout(False)        End Sub    End ClassEnd Class
    Observe você deve alterar o código no Visual Basic 2005. Por padrão, Visual Basic cria dois arquivos para o projeto quando você cria um projeto Windows Forms. Se o formulário é denominado Form1, os dois arquivos que representam o formulário são chamados de Form1.vb e Form1.Designer.vb. Escreva o código no arquivo Form1.vb. O Windows Forms Designer escreve o código no arquivo Form1.Designer.vb. O Windows Forms Designer usa a palavra-chave partial para dividir a implementação de Form1 em dois arquivos separados. Esse comportamento impede que o código gerado pelo designer sendo intercaladas com seu código.

    Para obter mais informações sobre os novos aprimoramentos linguagem Visual Basic 2005, visite o seguinte site da Web Microsoft Developer Network (MSDN): Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN: código do Visual .NET translation from VPE for Csharp
    using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace TabStopDemo{	public class Form1 : System.Windows.Forms.Form	{		private System.Windows.Forms.GroupBox groupBox1;		private System.Windows.Forms.Button button1;		private System.Windows.Forms.Button button2;		private System.Windows.Forms.Panel panel1;		private System.Windows.Forms.Button button3;		private System.Windows.Forms.Button button4;		private System.Windows.Forms.TabControl tabControl1;		private System.Windows.Forms.TabPage tabPage1;		private System.Windows.Forms.Button button5;		private System.Windows.Forms.Button button6;		private System.ComponentModel.Container components = null;		public Form1()		{			InitializeComponent();			UserControl1 MyControl = new UserControl1();						MyControl.Location = new Point(225, 150);			//			// Set TabStop equal to false			//			MyControl.TabStop = false;			this.Controls.Add(MyControl);		}		protected override void Dispose( bool disposing )		{			if( disposing )			{				if (components != null) 				{					components.Dispose();				}			}			base.Dispose( disposing );		}		private void InitializeComponent()		{			this.groupBox1 = new System.Windows.Forms.GroupBox();			this.button2 = new System.Windows.Forms.Button();			this.button1 = new System.Windows.Forms.Button();			this.panel1 = new System.Windows.Forms.Panel();			this.button4 = new System.Windows.Forms.Button();			this.button3 = new System.Windows.Forms.Button();			this.tabControl1 = new System.Windows.Forms.TabControl();			this.tabPage1 = new System.Windows.Forms.TabPage();			this.button6 = new System.Windows.Forms.Button();			this.button5 = new System.Windows.Forms.Button();			this.groupBox1.SuspendLayout();			this.panel1.SuspendLayout();			this.tabControl1.SuspendLayout();			this.tabPage1.SuspendLayout();			this.SuspendLayout();			// 			// groupBox1			// 			this.groupBox1.Controls.Add(this.button2);			this.groupBox1.Controls.Add(this.button1);			this.groupBox1.Location = new System.Drawing.Point(32, 32);			this.groupBox1.Name = "groupBox1";			this.groupBox1.Size = new System.Drawing.Size(176, 72);			this.groupBox1.TabIndex = 0;			//			// Set TabStop equal to false			//			this.groupBox1.TabStop = false;			this.groupBox1.Text = "groupBox1";			// 			// button2			// 			this.button2.Location = new System.Drawing.Point(96, 24);			this.button2.Name = "button2";			this.button2.Size = new System.Drawing.Size(64, 24);			this.button2.TabIndex = 1;			//			// Set TabStop equal to true			//			this.button2.TabStop = true;			this.button2.Text = "button2";			// 			// button1			// 			this.button1.Location = new System.Drawing.Point(16, 24);			this.button1.Name = "button1";			this.button1.Size = new System.Drawing.Size(64, 24);			this.button1.TabIndex = 0;			//			// Set TabStop equal to true			//			this.button1.TabStop = true;			this.button1.Text = "button1";			// 			// panel1			// 			this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;			this.panel1.Controls.Add(this.button4);			this.panel1.Controls.Add(this.button3);			this.panel1.Location = new System.Drawing.Point(232, 40);			this.panel1.Name = "panel1";			this.panel1.Size = new System.Drawing.Size(152, 64);			this.panel1.TabIndex = 1;			//			// Set TabStop equal to false			//			this.panel1.TabStop = false;			// 			// button4			// 			this.button4.Location = new System.Drawing.Point(80, 16);			this.button4.Name = "button4";			this.button4.Size = new System.Drawing.Size(56, 24);			this.button4.TabIndex = 1;			//			// Set TabStop equal to true			//			this.button4.TabStop = true;			this.button4.Text = "button4";			// 			// button3			// 			this.button3.Location = new System.Drawing.Point(8, 16);			this.button3.Name = "button3";			this.button3.Size = new System.Drawing.Size(56, 24);			this.button3.TabIndex = 0;			//			// Set TabStop equal to true			//			this.button3.TabStop = true;			this.button3.Text = "button3";			// 			// tabControl1			// 			this.tabControl1.Controls.Add(this.tabPage1);			this.tabControl1.Location = new System.Drawing.Point(24, 128);			this.tabControl1.Name = "tabControl1";			this.tabControl1.SelectedIndex = 0;			this.tabControl1.Size = new System.Drawing.Size(184, 96);			this.tabControl1.TabIndex = 2;			//			// Set TabStop equal to false			//			this.tabControl1.TabStop = false;			// 			// tabPage1			// 			this.tabPage1.Controls.Add(this.button6);			this.tabPage1.Controls.Add(this.button5);			this.tabPage1.Location = new System.Drawing.Point(4, 22);			this.tabPage1.Name = "tabPage1";			this.tabPage1.Size = new System.Drawing.Size(176, 70);			this.tabPage1.TabIndex = 0;			this.tabPage1.Text = "tabPage1";			// 			// button6			// 			this.button6.Location = new System.Drawing.Point(96, 16);			this.button6.Name = "button6";			this.button6.Size = new System.Drawing.Size(56, 24);			this.button6.TabIndex = 1;			//			// Set TabStop equal to true			//			this.button6.TabStop = true;			this.button6.Text = "button6";			// 			// button5			// 			this.button5.Location = new System.Drawing.Point(8, 16);			this.button5.Name = "button5";			this.button5.Size = new System.Drawing.Size(56, 24);			this.button5.TabIndex = 0;			//			// Set TabStop equal to true			//			this.button5.TabStop = true;			this.button5.Text = "button5";			// 			// Form1			// 			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);			this.ClientSize = new System.Drawing.Size(440, 330);			this.Controls.Add(this.tabControl1);			this.Controls.Add(this.panel1);			this.Controls.Add(this.groupBox1);			this.Name = "Form1";			this.Text = "Form1";			this.groupBox1.ResumeLayout(false);			this.panel1.ResumeLayout(false);			this.tabControl1.ResumeLayout(false);			this.tabPage1.ResumeLayout(false);			this.ResumeLayout(false);		}		[STAThread]		static void Main() 		{			Application.Run(new Form1());		}	}	public class UserControl1 : System.Windows.Forms.UserControl	{		private System.Windows.Forms.Button button1;		private System.Windows.Forms.Button button2;		private System.ComponentModel.Container components = null;		public UserControl1()		{			InitializeComponent();		}		protected override void Dispose( bool disposing )		{			if( disposing )			{				if(components != null)				{					components.Dispose();				}			}			base.Dispose( disposing );		}		private void InitializeComponent()		{			this.button1 = new System.Windows.Forms.Button();			this.button2 = new System.Windows.Forms.Button();						this.SuspendLayout();						// 			// button1			// 			this.button1.Location = new System.Drawing.Point(16, 16);			this.button1.Name = "button1";			this.button1.Size = new System.Drawing.Size(56, 24);			this.button1.TabIndex = 0;			//			// Set TabStop equal to true			//			this.button1.TabStop = true;			this.button1.Text = "button1";			// 			// button2			// 			this.button2.Location = new System.Drawing.Point(96, 16);			this.button2.Name = "button2";			this.button2.Size = new System.Drawing.Size(56, 24);			this.button2.TabIndex = 1;			//			// Set TabStop equal to true			//			this.button2.TabStop = true;			this.button2.Text = "button2";						// 			// UserControl1			// 			this.BackColor = System.Drawing.Color.FromArgb(255, 255, 255);			this.Controls.AddRange(new System.Windows.Forms.Control[] {this.button2, this.button1});			this.Name = "UserControl1";			this.Size = new System.Drawing.Size(176, 56);			this.ResumeLayout(false);		}	}}
  9. No menu Debug , clique em Iniciar para executar o aplicativo.

    Form1 é exibida.
  10. Pressione a tecla TAB várias vezes para definir o foco para os botões no Form1.

    Você não pode definir o foco para os dois botões que estão os controles de filho MyControl .
Esse comportamento pode parecer inconsistente. A propriedade TabStop do controle GroupBox , controle Panel ou TabControl controle é definida como False . O controle tem um controle filho com a propriedade TabStop definida como True . Quando você pressiona a tecla TAB, você pode definir o foco para o controle filho, mesmo que o controle pai tenha TabStop definida como False . No entanto, se o controle pai for um controle de usuário, você não pode definir o foco para o controle filho quando você pressiona a tecla TAB.
Referências
Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 820628 - Última Revisão: 12/03/2007 18:48:41 - Revisão: 2.9

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft .NET Framework 2.0, Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.0

  • kbmt kbvs2005swept kbvs2005applies kbtabctrl kbbutton kbctrlcreate kbwindowsforms kbforms kbctrl kbcontrol kbsample kbprogramming kbprb KB820628 KbMtpt
Comentários