Como llamar a un formulario solo con el nombre en vb.net
Si desean realizar una aplicación dinámica de seguro se toparan con el problema de que no pueden instanciar sus formularios sin declararlos previamente uno a uno de la siguiente manera:
Dim formCliente as new FormCliente() formCliente.Show() Dim formProveedor as new FormProveedor() formProveedor.Show() Dim formEmpresa as new FormEmpresa() formEmpresa.Show()
Si lo que desean es agregarle un toque mas dinámico y levantar cualquier formulario de nuestra aplicación tan solo indicando el nombre de estos (este nombre puede ser guardado en una base de datos por ejemplo). De seguro esta función resolverá su problema.
Public Sub AbrirFormulario(ByVal nameForm As String) Dim proyecto As String Try proyecto = Application.ProductName //Si conocen el nombre del proyecto pueden agregarlo directamente Dim frm As Form = DirectCast(Activator.CreateInstance( _ Type.GetType(proyecto + "." + nameForm)),Form) frm.ShowDialog() //Pueden variar dependiendo del uso entre modal y no modal // (ShowDialog() o Show()) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
Espero sea de su utilidad
Hola, buen día, inicialmente te agradezco el aporte, excelente, el motivo de la consulta es el siguiente, en una tabla de base de datos, tengo el nombre del formulario y una especie de permisos para realizar eventos, son bastantes formularios, por eso es genial tu aporte, ahora como debiera hacer?
por ejemplo:
frm.nombredelboton.enabled=tabla(0)(7) ‘esto según la consulta a la base de datos
Cabe indicar que soy primiparo, estoy iniciando en visual basic 2017
tengo la siguiente consulta, he llamado a un formulario dinamicamente en VB -> form1,
la cuestión es que en el form1 tengo un textbox y un boton que llama a un form2 y en el form2 tengo un DataGridView cargado con información;
al dar doble clic en alguna fila del datagridview este deberia pasar la información al textbox del form1.
Nota: si al form1 no lo llamo de forma dinamica me corre normal, pero el problema es cuando lo llamo de forma dinamica no pasa la informacion de la fila seleccionada del form1 al textbox del form2.
¿Cómo hago para pasar información del form2 al form1 que fue llamado dinámicamente?.
Estimado, no entiendo para que lo haces de manera dinamica si son formularios conocidos. En este tipo de casos es más sencillo hacerlo de forma tradicional y si quieres compartir información entre formularios puedes utilizar eventos personalizados.
Saludos
¡Gracias!
Excelente aporte
Hola, suponiendo que tengo abierto dinámicamente un formulario del cual tengo el nombre. Necesito leer sus propiedades; como puedo acceder ??? es decir, con el nombre guardado en una variable string debo leer la instancia del formulario y acceder a sus propiedades; mil gracias si me pueden ayudar
Cualquier propiedad del formulario abierto la puedes acceder desde la variable frm seguida de un . ejemplo frm.Name = nombre formulario:
Podrás acceder a cualquier datos de un formulario normal nombre, tamaño, letras, estilos, ahora si quieres acceder a propiedades personalizadas por ti, es un poco mas complejo ya que este método dinámico se utiliza básicamente para abrir formularios, no para otra cosa. Saludos
ejemplo: el formulario que abrimos contiene una table. al poner:
frm.TablaBindingSource.RemoveCurrent()
me da un error porque indica que el TablaBindingSource no es miembro del formulario frm.
Help!!
Este tipo de llamadas dinámicas solo puede llamar a métodos genéricos de un Form, si necesitas llamar al método tienes que instanciarlo normalmente TuForm form = new TuForm(); form.TablaBindingSource.RemoveCurrent(); o bien mediante un cast al formulario dinamico dada una condición, como por ejemplo el nombre if(form.Name == ‘TuForm’){ TuForm frm = (TuForm) form;}.
Saludos
Haaa pero si quiero agregar informacion a ese formulario abierto, como se haria, se puede saber cual es la instancia de ese formulario?
Este método solo te permitirá cambiar los datos que formen parte de las propiedades de un Form.
Por ejemplo si quieres cambiar el text solo debes poner
Que dato en particular quieres modificar??
Haaaa! pues solo queria saber si es era posible jejeje, gracias por tu pronta respuesta!!
Barbaro !!!
Justo lo que andaba buscando !