2009-07-05 35 views
10

¿Cómo crear un control de pestañas con un número dinámico de pestañas en Visual Studio C#?Crear un control de pestañas con un número dinámico de pestañas en Visual Studio C#

Tengo una base de datos con una tabla customers. Necesito crear un formulario que muestre las pestañas con las primeras letras del apellido de los clientes (solo aquellas primeras letras, para las cuales hay entradas en la tabla, deberían estar presentes). Cada pestaña debe contener un control DataGrid con los clientes correspondientes. Me conecto a la base de datos usando DataSet.

¿Dónde debería insertar el fragmento de código que generaría dichas pestañas? ¿Puedo hacer eso con el control de pestañas existente o debería crear un control personalizado?

Respuesta

16

Puede generar pestañas dinámicas con el TabControl existente. Aquí hay un ejemplo de cómo se puede hacer en un tipo de forma de pseudo código ...

TabControl tabControl = new TabControl(); 
tabControl.Dock = DockStyle.Fill; 

foreach (Char c in lastNameList) 
{ 
    TabPage tabPage = new TabPage(); 
    tabPage.Text = c.ToString(); 

    DataGrid grid = new DataGrid(); 

    grid.Dock = DockStyle.Fill; 
    grid.DataSource = dataForTheCurrentLoop; 

    tabPage.Controls.Add(grid); 
    tabControl.Controls.Add(tabPage); 
} 

this.Controls.Add(tabControl); 
0

Parece que la mejor ruta para usted sería crear su propia clase de control de pestañas personalizada. Podría heredar del control de pestañas la mayor parte de su funcionalidad y propiedades para la cuadrícula de datos y cualquier otra cosa que necesite. Luego, cuando reciba a sus clientes, puede crear una pestaña para cada letra que necesite y configurar las propiedades correspondientes.

2

Agregará el código para generar las pestañas donde determinará qué letras se deben mostrar, probablemente cuando recupere los datos o en el método OnLoad() del formulario. Debería poder añadir/eliminar dinámicamente pestañas del control de pestañas incorporado. Puede consultar el código del diseñador para obtener alguna idea sobre cómo hacerlo o los documentos.

Tenga en cuenta que no es necesariamente una buena idea agregar una pestaña separada para cada carácter. 26 pestañas (que sucederán cuando tu base de datos sea razonablemente grande) es un número bastante horrible de pestañas para que alguien revise, no necesariamente hará las cosas más rápidas.

En su lugar, considere proporcionar un mecanismo de filtrado dinámico, similar al cuadro de búsqueda en el menú de inicio de Vista. Su usuario puede escribir un solo carácter (suponiendo que no está escribiendo algún tipo de kiosco o software de pantalla táctil) y acercar de inmediato a los nombres relevantes. Esto funcionaría idealmente con un ListView en modo Lista o Detalles.

1

No recuerdo los detalles ahora. Pero solo mira el código en el archivo XXX.designer.cs para un formulario que tienes que contiene un control de pestañas. Allí verá el código generado para agregar una nueva pestaña. Simplemente replique esas líneas, puede agregar una nueva pestaña cuando lo desee.

Cuestiones relacionadas