Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Tabpage dinamicamente

125 views
Skip to first unread message

Carlos Gómez

unread,
May 13, 2005, 12:47:40 AM5/13/05
to
Crea un módulo que contenga una subrutina o procedimiento el cual tenga como
entrada un objeto listview. Luego, dentro del procedimiento modificas las
propiedades que quieres.


"Tabpages" <Tabp...@discussions.microsoft.com> escribió en el mensaje
news:1EF1EA4C-D230-499F...@microsoft.com...
> Hola, os explico mi problema...
> tengo un tabcontrol que tiene 7 tabpages y cada tabpage tiene un listview.
> La cuestion es que me gustaria crear los listviews dinamicamente, ya que
> yo
> los creo arrastrando el boton.
> Al listview le doy estas caracteristicas:
> ListView1.View = View.Details
> ListView1.FullRowSelect = True
> ListView1.GridLines = True
> ListView1.LabelEdit = False
> ListView1.Columns.Clear()
> ListView1.Items.Clear()
> ListView1.Columns.Add("Ejercicio", 150, HorizontalAlignment.Left)
> ListView1.Columns.Add("Series", 90, HorizontalAlignment.Left)
> ListView1.Columns.Add("Repeticiones", 90, HorizontalAlignment.Left)
>
> si tengo que hacer esto siete veces es un poco follon... por eso me
> gustaria
> hacerlo dinamicamente pero no se como... si me pudierais ayudar... Gracias
>


Pablo Fébolo

unread,
May 13, 2005, 8:43:12 AM5/13/05
to
Configura un Listview (digamos en el primer tabPage)
y luego copia y pega el listview en los otros tabpages
(se mantendra toda la configuración)

Saludos.

Tristan

unread,
May 14, 2005, 5:14:10 AM5/14/05
to
¿Sigues necesitando añadir dinámicamente?

--
Juan Carlos Badiola
MVP - C#


Tristan

unread,
May 14, 2005, 8:58:37 AM5/14/05
to
No hay ninguna dificultad en crear controles dinámicamente. De hecho, en realidad todos los controles de un formulario windows forms se crean dinámicamente. Solo tienes que abrir la región de código que genera el diseñador, la que contiene InitializeComponents(), para ver como se crean dinámicamente los controles. El diseñador de windows forms, lo que hace es generar código para que se creen los controles en tiempo de ejecución.
 
Para lo que quieres, la forma más fácil es aprovechar el trabajo del diseñador, copiar/cortar-pegar el código generado y adaptarlo a tus necesidades. En general un control se crea así:
 
dim tuControl as new TipoControl
' asignas propiedades de tuControl
me.controls.Add(tuControl)
 
Para el caso de un TabControl es más o menos lo mismo, creas un TabPage y lo añades a lu colección TabPages. Los controles que quieras que se incluyan en una página tendrán como Parent la página y no el form (Me). Un ejemplo completo sería algo así:
 

        Dim unTabControl As New TabControl

        unTabControl.Bounds = New Rectangle(10, 10, 300, 200)

        Dim i As Integer

        Dim pagina As TabPage

        For i = 1 To 8

            pagina = New TabPage

            pagina.Text = "Página " & i.ToString

            Dim unTextBox As New TextBox

            unTextBox.Location = New Point(5, 5)

            unTextBox.Text = "Texto de " & i.ToString()

            pagina.Controls.Add(unTextBox)

            unTabControl.TabPages.Add(pagina)

        Next

        Me.Controls.Add(unTabControl)

 

Tabpages

unread,
May 12, 2005, 7:12:22 PM5/12/05
to

Tabpages

unread,
May 16, 2005, 12:38:34 PM5/16/05
to
Muchas gracias Tristan, tengo una duda a ver si me la sabes resolver, es
sobre esto, me gustaria hacer un for para estos listviews, seria una cosa
asi...
for i=0 to 7
listview & "i".items.clear()
next

es que ahora lo tengo asi:
ListView1.Items.Clear()
ListView2.Items.Clear()
ListView3.Items.Clear()
ListView4.Items.Clear()
ListView5.Items.Clear()
ListView6.Items.Clear()
ListView7.Items.Clear()

el for que hago me da un error porque no declaro bien lo del listview & i...
sabes como seria o si se puede hacer? merci!


"Tristan" escribió:

Tristan

unread,
May 16, 2005, 4:55:57 PM5/16/05
to
Lógicamente el código listview & "i" no funciona. Eso no puede compilar. Para eso existen las colecciones, por ejemplo la que simagino conocerás más: Array.
 
Para recorrer la lista de ListView tienes que guardar las instancias creadas dinámicamente en una colección. Un array si es de tamaño fijo, arraylist si dinámica, HashTable si el acceso será por clave, etc...
 
Por ejemplo el código del ejemplo anterior con un array quedaría así:
 
 

        Private vistas(7) As ListView

 

        Dim unTabControl As New TabControl

       

unTabControl.Bounds = New Rectangle(10, 10, 300, 200)

        Dim i As Integer

        Dim pagina As TabPage

        For i = 0 To 7

            pagina = New TabPage

            pagina.Text = "Página " & (i + 1).ToString

            vistas(i) = New ListView

            vistas(i).Dock = DockStyle.Fill

            'vistas(i). Otras operaciones sobre el ListView

            pagina.Controls.Add(vistas(i))

            unTabControl.TabPages.Add(pagina)

        Next

        Me.Controls.Add(unTabControl)

 

En cualquier momento podrás hacer:

 

dim vista as ListView

for each vista in vistas

    lo que necesites sobre tu objeto vista

next

 

Probablemente necesitarás tratar eventos para tus controles creados dinámicamente. Para eso busca información sobre la sentencia AddHandler.

0 new messages