2012-02-19 27 views
5

Tengo pocas TabPages y cada una contiene un cuadro de texto enriquecido. ¿Cómo puedo acceder a richtechbox en una pestaña seleccionada?¿Cómo obtener control (es) de TabPage en C#?

TabPage selectedTab = tabControl.SelectedTab; 
RichTextBox selectedRtb = selectedTab.Controls.Find("rtb", true).First() as RichTextBox; 

Esto es lo que he intentado pero no tuve suerte.

Agregado:

Esto es cómo se añade TabPage con el control RichTextBox

TabPage newTab = new TabPage(name); 
RichTextBox rtb = new RichTextBox(); 
rtb.Dock = DockStyle.Fill; 
rtb.BorderStyle = BorderStyle.None; 
rtb.Text = file.Data; 
newTab.Controls.Add(rtb); 
tabControl.TabPages.Add(newTab); 
tabControl.SelectedTab = newTab; 
+0

enviar el código que agrega el control a la pestaña. –

+0

El nombre de la variable es irrelevante. Olvidó establecer la propiedad Nombre. –

Respuesta

9

Si esto es Windows Forms, que sólo sería:

if (selectedTab.Controls.ContainsKey("rtb")) 
    RichTextBox selectedRtb = (RichTextBox)selectedTab.Controls["rtb"]; 

si RTB es el nombre del control RichTextBox.

Al crear su control, agregue el nombre a la misma:

RichTextBox rtb = new RichTextBox(); 
rtb.Name = "rtb"; 
3

La razón por la que su enfoque no funciona es porque su están tratando de encontrar mediante el uso de la propiedad nombre del control.

Mirando su código no está configurando la propiedad Name. Si puede generar un nombre conocido de antemano, puede usarlo cuando busque el control.

También puede probar esto:

var rtb = tabControl.SelectedTab.Controls.Cast<Control>() 
           .FirstOrDefault(x => x is RichTextBox); 
Cuestiones relacionadas