¿Cómo puedo hacer una matriz de control? O el equivalente.

Estoy acostumbrado a Visual Basic 6, que presenta la opción de crear una matriz de control cuando puedo copiar y pegar y control.

No recuerdo, son las matrices de control, de modo que usted puede agregar dinámicamente nuevos controles al formulario? Esto ES lo que estamos tratando de lograr?

OriginalEl autor jSherz | 2010-09-25

5 Comentarios

  1. 6

    Matrices de Control ido de largo. Orientado a objetos métodos son ahora la ley de la tierra para VB.

    Usted necesita utilizar una colección de algún tipo, como un lista.

    OriginalEl autor Brad

  2. 2

    Otra característica implícita de las matrices de control que es fácil de pasar por alto es la asociación de índices numéricos con cada elemento de la matriz. Los índices pueden ser de cualquier int positivo siempre que areunique en la colección; no tienen que ser consecutivos. En consecuencia, la matriz es más como un diccionario indexados por enteros con cada elemento el valor de ser una instancia de un tipo específico de control.

    Lógica en el VB6 controladores de eventos para el control de la matriz de obtener el valor del índice, junto con los atributos del evento a realizar. La lógica en el controlador normalmente se utiliza el índice para determinar la instancia de control de la fue levantando el evento.

    .NETO de los controladores de eventos son muy diferentes. Normalmente se obtiene una referencia a un control específico de instancia y de una instancia de un evento específico objeto con los atributos del evento a realizar. Usted NO va a obtener el índice.

    También, VB6 aplicaciones a veces tiene lógica que recorre/manipula el control de la matriz como una matriz.

    En nuestras traducciones predeterminadas, tratamos de apoyar legado de VB6 lógica que depende explícitamente de la matriz de control y sus índices. Nos re-escribir las matrices de control como un grupo de instancias de control y, a continuación, añadimos a un genérico OrderDictionary<int, controlType> durante formulario de inicialización. Los controles individuales suscribirse a los eventos y podemos utilizar la colección de buscar el índice dado una instancia de control o para recorrer/manipular los elementos de la «matriz». Si no explícitamente la necesidad de que el índice o la matriz, usted puede deshacerse de la colección.

    Agregar dinámicamente los controles es más trabajo ahora, era conceptualmente como la adición de un elemento a la matriz de control y con el apoyo de una sola instrucción en VB6 (control de Carga). Hasta donde yo sé, en .NETA que usted necesita para clonar un control, copia en profundidad las propiedades de forma explícita, y el gancho de seguridad de los controladores de eventos de manera explícita. Se puede generalizar el uso de la reflexión y de otros moderadamente avanzadas técnicas-pero seguro que no es simplemente llamar «control de carga». Si hay una manera más fácil de hacer esto .NETA me encantaría oír acerca de él. FWIW: traducimos a una función auxiliar.

    OriginalEl autor mark

  3. 0

    Una matriz de control en VB6 únicamente existía para permitir que un solo controlador de eventos para varios controles del mismo tipo.

    Se puede hacer esto en VB.NET al poner los controles en la Handles cláusula:

    private sub Button_Click(...) Handles Command1.Click, Command2.Click, Command3.Click
    
    end sub
    No el único. También permite poner más de 256 controles en un formulario.
    No necesariamente. Usted podría utilizar Controls.Add a hacer lo mismo sin necesidad de crear una matriz de control.
    Sólo si quieres (y son capaces de a) agregar los controles en tiempo de ejecución. Pero si hay, por ejemplo, una docena de páginas de ficha completa de controles, que podría no ser una opción.

    OriginalEl autor GSerg

  4. 0

    Usted sólo puede actuar a través de código. Por ejemplo:

    Dim c() As TextBox
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim j As Integer
        For j = 0 To 10
            ReDim Preserve c(j)
            c(j) = New TextBox
            c(j).Name = "txt" & j
            c(j).Parent = Me
            c(j).Top = j * c(j).PreferredHeight + 2
            c(j).Tag = j
            c(j).Visible = True
            AddHandler c(j).KeyPress, AddressOf TestKeyPress
        Next
    End Sub
    
    Public Sub TestKeyPress(source As Object, e As KeyPressEventArgs)
        Dim index As Integer
        index = CInt(source.tag)
        If index >= 5 Then
            If e.KeyChar > "9" Or e.KeyChar < "0" Then
                e.Handled = True
            End If
        Else
            If e.KeyChar <= "9" And e.KeyChar >= "0" Then
                e.Handled = True
            End If
        End If
    End Sub

    Esto creará once cuadros de texto de asignar a todos el mismo controlador de eventos.

    La propiedad TAG es utilizado para almacenar y recuperar la idex del cuadro de texto.

    OriginalEl autor cesare

  5. 0

    hay tres maneras de crear la matriz de control.

    1. asignar el mismo nombre a más de un control.
    2. copiar un evangelizadora de control y más allá de él en el formulario.
    3. establecer el índice propiamente a un valor que no es null.

    OriginalEl autor sandeep sharma

Dejar respuesta

Please enter your comment!
Please enter your name here