Ver Mensaje Individual
  #16 (permalink)  
Antiguo 03/10/2005, 19:19
Avatar de xknown
xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hola,

He intentado replicar el ambiente que tienes y he esto es lo que he modificado:
Código:
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
    Dim frmSeleccion As Form4
    Select Case ToolBar1.Buttons.IndexOf(e.Button)
        Case 0
            frmSeleccion = AbrirVentana(GetType(Form4), 0)
            frmSeleccion.sql = "select idejercicio,nombre,finalidad from Ejercicios"
            frmSeleccion.tabla = "Ejercicios"
        Case 1
            frmSeleccion = AbrirVentana(GetType(Form4), 1)
            frmSeleccion.sql = "select idproveedor,nombre,telefono1,telefono2 from Proveedores"
            frmSeleccion.tabla = "Proveedores"
    End Select
    frmSeleccion.Show()
End Sub

Private Shared formInstances As New SortedList   ' Para guardar las referencias de las instancias de los formularios
Public Shared Function AbrirVentana(ByVal type As Type, Optional ByVal index As Integer = 0) As Form
    Dim Formulario As Form = formInstances(type.ToString() & index) ' No compila con "Option Strict", usar el de abajo
    ' Dim Formulario as Form = CType(formInstances(type.ToString()), Form)
    If Formulario Is Nothing OrElse Formulario.IsDisposed Then
        Formulario = Activator.CreateInstance(type) ' No compila con "Option Strict", usar el de abajo
        ' formulario = Ctype(Activator.CreateInstance(type), Form)
        formInstances(type.ToString() & index) = Formulario
    End If

    Formulario.Activate()
    Formulario.WindowState = FormWindowState.Normal

    Return Formulario
End Function
Como ves, ahora le paso como parámetro opcional el índice del botón que llama a dicha función, el cual se concatena con el tipo del formulario para controlar el número de instancias, si bien es una _solución_ que funciona, personalmente no me gusta...

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño