Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

146
Views
Seleccionar programáticamente una TabPage existente en un TabControl muestra una página en blanco

Utilizo este método para crear una nueva TabPage en un TabControl ( TabManager ) si no existe una TabPage con el texto especificado, o simplemente la selecciono si ya existe:

 private void AddControls(UserControl uc, string TabCaption) { Boolean TabFound = false; if (TabManager.TabCount == 0) { TabPage tp = new(TabCaption); TabManager.TabPages.Add(tp); uc.Dock = DockStyle.Fill; tp.Controls.Add(uc); TabManager.SelectedTab = tp; } else { TabPage tp = new(TabCaption); foreach (TabPage tp1 in TabManager.TabPages) { if (tp1.Text == TabCaption) { TabFound = true; } } if (TabFound != true) { TabManager.TabPages.Add(tp); uc.Dock = DockStyle.Fill; tp.Controls.Add(uc); TabManager.SelectTab(tp); //tp.Show(); //tp.BringToFront(); } else { TabManager.SelectedTab = TabManager.TabPages[tp.Name]; return; } } }

El problema es que TabPage no está seleccionado, sino que se muestra una página vacía.

Tabcontrol página vacía

El código ofensivo parece ser:

 TabManager.SelectedTab = TabManager.TabPages[tp.Name];

Como solo mostrará una TabPage vacía.
Busqué documentación pero no encontré ninguna solución hasta ahora.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Si crea una nueva TabPage con el texto proporcionado (como en TabPage tp = new(TabCaption); ), su objeto tp no es el mismo que una TabPage existente con el mismo título, por lo que TabManager.SelectTab(tp); no lo seleccionará (no es el mismo objeto).

Verá un fondo en blanco porque cuando usa el método TabControl.SelectedTab() y la TabPage especificada no existe, ninguna TabPage es la actual, por lo que solo ve el fondo de TabControl.


Para determinar si agregar o simplemente seleccionar una TabPage, puede verificar si TabControl no tiene TabPages (como lo está haciendo) y también verificar si ya existe una TabPage con el mismo nombre .
Puede utilizar el método TabPageCollection.IndexOfKey() para realizar esta comprobación.

Debe asignar un Nombre a su nueva TabPage, no solo un Título, como sucede cuando crea una nueva TabPage en el Diseñador.

Esto simplifica la creación y/o selección de TabPages. Su código podría ser entonces:

 private void AddControls(Control uc, string tabCaption) { if (TabManager.TabCount == 0 || TabManager.TabPages.IndexOfKey(tabCaption) < 0) { var tp = new TabPage(tabCaption); // or TabPage tp = new(tabCaption); tp.Name = tabCaption; uc.Dock = DockStyle.Fill; tp.Controls.Add(uc); TabManager.TabPages.Add(tp); } TabManager.SelectedTab = TabManager.TabPages[tabCaption]; }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!