Estoy trabajando en un vb.net proyecto en VS 2012 que dispone de múltiples formas. Tengo, digamos, Form1 con un ListView y que yo llamo un From2 de Form1. Puedo añadir este código en el evento Load de Form2:

Form1.ListViewTest.Items.Add("test")

El visual studio lanza ningún error, pero en realidad no pasa nada en el control ListView en Form1. He intentado cambiar los Modificadores de Amigo a público sin éxito. ¿Hay algo más que se me olvida?

  • Debe proporcionar una referencia para los ListView en Form1, de lo contrario no se tiene acceso. Utilice el constructor de Form2 a pasar la referencia. Además, usted puede tener un problema subprocesamiento, como usted probablemente no está permitido el acceso a la Form1 de Form2.
  • Puede usted por favor decirme cómo proporcionar un marco de referencia para el control ListView en Form1 y cómo utilizar el constructor de Form2 pasa la referencia?
  • Publica tu código y, a continuación, podemos decirle cómo cambiarlo para que funcione.
  • mi VB.NET chupa, acaba de pasar el ListView como Argumento en el constructor de Form2
  • Hay una forma frmConnection con un control de ficha y un ListView denomina Conexiones en el puño de la ficha. En la segunda pestaña, hay un botón con el siguiente código: Dim newform Como Nuevo frmMain ‘ya hay una forma frmMain newform.txtPort.Texto = TextBox1.Texto newform.Show() ‘para cargar y empezar a escuchar newform.Hide() por Lo que un segundo formulario se ejecuta en segundo plano y empieza a escuchar. Cuando un cliente se conecta a este servidor este formulario muestra con Mí.Show() y también quiero añadir elemento «Cliente conectado» en el control ListView Conexiones en frmConnection
InformationsquelleAutor user2373081 | 2013-08-06

2 Comentarios

  1. 1

    Tienes que acceder a la instancia de form1, no de la forma 1 objeto en sí mismo. El paso a través de todas las formas abiertas, y conseguir el que usted desea. Yo personalmente uso el .Etiqueta de objeto de un formulario, y sólo tiene que añadir una cadena en la que la identifican.

        For Each f As Form In My.Application.OpenForms
    
            If Not f.InvokeRequired Then
                ' Can access the form directly.
                'Get main form , use main form
                If f.Tag = "main" Then
                    Dim fcast As New form_form1 '<< whatever your form name
                    fcast = f
                    Dim xitem As New ListViewItem
                    xitem.Text = "blah"
                    xitem.SubItems.Add("sub blah")
    
                    fcast.listview1.Items.Add(xitem) '<< use listview name
                End If
    
            End If
    
        Next
    • Nota: El f.InvokeRequired de verificación sólo es necesaria si se ejecuta el código anterior dentro de un subproceso diferente al contexto que no es el caso aquí: Ambas formas están en la misma interfaz de usuario (UI) de hilo. Y si es necesario en un entorno multiproceso, usted necesita proporcionar algo en el else rama (es decir,BeginInvoke), de lo contrario el código no hace nada.
    • Hola, sí. Verdadero. El código que he copiado esto de se utilizó en mis múltiples subprocesos de la aplicación en un escenario. Buen lugar.
  2. 0

    Esto es muy simple, si usted va a hacer referencia a cualquier control de un cuadro de diálogo de la ventana, hay dos maneras de hacer esto, el primero es el siguiente:

    Parte I

    1 – asegúrese de que el control que desea acceder el modificador se encuentra a la información Pública

    2 – a continuación, en la ventana de diálogo, hacer esto:

    Dim f como Form1 ‘ usted no necesita utilizar las nuevas, porque usted no desea utilizar otra nueva y fresca versión, desea utilizar la ya existente, por lo que sólo utiliza el nombre de formulario como referencia

    3 – hacer esto:

    f = Ctype(Me.Propietario, Form1) ‘ usted no necesita ciclo a Través del formulario de recolección, debido a que cada nombre del formulario es único

    f.LightGridControl.Texto = «Esta información»

    Parte II

    Puede crear un privado vairiable en la sección de declaración de la ventana principal

    Privado _mainWin como form1 ‘ esta es la misma ventana de nombre único

    a continuación, crear un

    Público de la Propiedad MainForm como Form1
    Obtener
    Volver _mainWin
    Fin De Obtener
    Set (ByRef valor como Form1)
    _mainForm = valor
    End Set
    Final si

    en el Evento de Clic de Botón, usted puede escribir esto:

    Dim f como New Form2

    _mainForm = Me

    f.DialogBox(Me)

    A continuación, en cualquier caso, desde el form2 a la que desea acceder el control de form1 (ventana principal), que acaba de hacer esto:

    Dim f como form1

    f.MainForm.TextBox1.Texto = «Mi Información»

    Es fácil mi amiga!! Buena Suerte, que me haga saber, ¿cómo te fue.

    Tenga un Buen Día!! Espero que esto pueda ayudar a alguien!!

Dejar respuesta

Please enter your comment!
Please enter your name here