• Viernes 8 de Noviembre de 2024, 13:47

Autor Tema:  Error al abrir una forma en Windows Form  (Leído 4302 veces)

ricklopezz

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Error al abrir una forma en Windows Form
« en: Viernes 12 de Junio de 2009, 00:29 »
0
Que tal amigos, tengo un problema que me trae muy cortito. Estoy haciendo una aplicacion en NET, que muestra una lista en un DatagridView. Lo que necesito es que al seleccionar un registro de la lista con doble click, se abra una forma y se llenen automaticamente los datos del registro seleccionado. Ademas necesito que no permita abrir la forma FrmAltaRegistros mas de una vez. Lo hice de esta manera.


  Private Sub dtaGridView_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dtaGridView.CellMouseDoubleClick
        Call Carga_Forma_Datos(dtaGridView.SelectedRows)
    End Sub


    Private Sub Carga_Forma_Datos(ByVal oRows As DataGridViewSelectedRowCollection)
        Dim ChildForm As FrmAltaRegistros
        'Barremos las formas que hay en el parent para encontrar la referencia
        For Each f As Form In Me.MdiChildren
            If TypeOf f Is FrmAltaRegistros Then
                childForm = CType(f, FrmAltaRegistros)
                Exit For
            End If
        Next
        'Si la encontró ya no necesita la instancia solo la mostramos
        If Not (ChildForm Is Nothing) Then
            ChildForm.Show()
            ChildForm.Focus()
        Else
            'No se ha creado por lo tanto generamos la instancia
            ChildForm = New FrmAltaRegistros
            ChildForm.MdiParent = MDISanfer
            ChildForm.Show()
            Call ChildForm.Carga_RegistroSeleccionado(oRows)
            ChildForm.Focus()
        End If
    End Sub


Me manda un error de: No se controló Win32Exception - Error al identificador de ventana. Este error lo manda exactamente al momento de hacer el ChildForm.Focus


Espero, puedan apoyarme. Gracias.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #1 en: Viernes 12 de Junio de 2009, 09:01 »
0
Hola.

No he mirado a fondo tu código (no utilizas etiquetas para presentarlo ordenadamente, y resulta incómodo de leer), pero he visto algunas cosas.

el error lo puedes corregir fácilmente las esplicaciones en el código:
Código: Visual Basic
  1.  
  2. ' elimina estas líneas
  3. ChildForm.MdiParent = MDISanfer
  4. ChildForm.Focus()
  5.  
  6. ' y cambia está línea:
  7. ChildForm.Show()
  8. ' por esta otra
  9. ChildForm.ShowDialog()
  10.  
  11.  



Te comento alguna cosa...
Si tienes un formulario llamado FrmAltaRegistros, entonces puedes crear instancias de él, sin perder tiempo dando vueltas a la farola.
Código: vb.net
  1.  
  2. Private Sub Carga_Forma_Datos(ByVal oRows As DataGridViewSelectedRowCollection)
  3.   Dim ChildForm As FrmAltaRegistros
  4.  
  5.  
  6.     set ChildForm = new FrmAltaRegistros   ' Creamos una instancia de un objeto que sabemos que existe..
  7.     ChildForm.showdialog     ' lo mostramos y si quieres lo mueves de posición...
  8.     Call ChildForm.Carga_RegistroSeleccionado(oRows)    ' ejecutas lo que se supone que hace..
  9. End sub
  10.  
  11.  
  12.  
  13.  
  14. ' si tienes dudas acerca de si el formulario existe, puedes envolverlo en un condicional
  15.     if FrmAltaRegistros  isnot nothing then
  16.        set ChildForm = new FrmAltaRegistros                      
  17.        ChildForm.showdialog                                      
  18.        Call ChildForm.Carga_RegistroSeleccionado(oRows)  
  19.    else
  20.        messagebox.show ("imposible crear una instancia del formulario FrmAltaRegistros, no tienes establecida una referencia..."
  21.    end if
  22.  
  23.  
  24.  
  25. ' también podrías hacerlo como un intento...
  26. Try
  27.     set ChildForm = new FrmAltaRegistros                    
  28.     ChildForm.showdialog                                            
  29.     Call ChildForm.Carga_RegistroSeleccionado(oRows)  
  30. Catch ex as exception
  31.        messagebox.show ex.message
  32. finnally
  33.     ' .........    
  34. end try
  35.  
  36.  
«Ma non troppo»
----> ModoVacaciones = False<----

ricklopezz

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #2 en: Viernes 12 de Junio de 2009, 23:09 »
0
Que tal, muchas gracias. Segui las instrucciones que mencionas, ya no aparece el error, pero no funciona conforme lo necesito.

Te comento.  La funcion Carga_RegistroSeleccionado Se encarga de llenar los combobox y demas datos de la forma frmAltaRegistros con los datos que se estaban desplegando en el datagridview.

Con los cambios que mencionas, el frmaltaregistros.showdialog, activa la forma, pero no regresa a ejecutar el Carga_RegistroSeleccionado hasta que no la cierro. Y lo que necesito es que la abra y llene los campos. Ojala puedan ayudarme.


Saludos

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #3 en: Sábado 13 de Junio de 2009, 13:17 »
0
OK.

entonces cambia el showdialog por sólo show.
Dado que lo tenías como un FrmChild pensé que realmente querías mandarle el foco una vez abierto.

Con show tras terminar el evento load del formulario regresa a la siguiente instrucción tras frm.show

y por favor quita esa coletilla de 'ojalá puedan ayudarme', a mi me resulta injurioso... que todo el que entre diga lo mismo, la ayuda no depende del ojalá, ni de pedirlo con más o menos vehemencia. Depende de factores humanos exclusivamente, tiempo libre, ganas de dedicar tu tiempo libre, planteamiento del problema (por ejemplo si no fueras novato con tu código sin etiquetar no me hubiera molestado en responder), etc... pero no porque alguien pida algo de rodillas se le atiende, a mi, antes bien, me ofende como ser humano ver que otro se arrastre como un gusano, no es necesario.
«Ma non troppo»
----> ModoVacaciones = False<----

ricklopezz

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #4 en: Jueves 18 de Junio de 2009, 20:31 »
0
Gracias por lo que respecta a la ayuda que pretendiste dar, pero que en lo particular no me funcionó. Tuve que hacerlo de otra manera que publicaré más adelante para gente que tenga el mismo problema.

Por otra parte, me molesto mucho tu comentario. En ningun momento te suplique o te solicite algo de rodillas, a ti ni a nadie de éste foro de apoyo, si eso te pareció creo que estas muy mal de tu cabeza y te falta muchisimo enfoque. No te consideres un maestro, ya que te falta muchisima humildad para lograrlo. Lo unico bueno que tienes es un ego que desborda, dime de que presumes y te diré de que careces. Deberias mirarte en un espejo para ver que tienes o que has logrado.

Espero que anteriormente ya te hayan mandado a la goma y muy lejos, sino es asi, lamento en verdad ser el primero.

Saludos

Ricardo

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #5 en: Jueves 18 de Junio de 2009, 22:41 »
0
Cita de: "ricklopezz"
Gracias por lo que respecta a la ayuda que pretendiste dar, pero que en lo particular no me funcionó.

Esto funciona perfectamente, no hay ningún misterio en el código... el único modo de que no funciones es que el formulario 'FrmAltaRegistros' tenga una referencia nula, pero de eso debes cuidarte, tú, puesto que eres tú quien crea dicho formulario, en cualquier caso si falla te señalará el mensaje.... de error pertienente. Si me sigues diciendo que te falla, por favor te exijo que me muestre completamente el error devuelto, no acepto que digas que no funcionó sin su correspondiente demostración. En VB NET un error se proporciona tan detallado que básicamente ni podrías falsificarlo (además habría que saber cómo hacerlo)... dame el stacktrace del error si insistes en que no funciona o cállate.

Lo otro que pueda fallar es lo que hagas en la función Carga_RegistroSeleccionado, pero ahí no entro eso lo has programado tú y lo que haga bien o mal no me toca en nada.
Código: Visual Basic
  1.  
  2. Try
  3.     set ChildForm = new FrmAltaRegistros                    
  4.     ChildForm.show                                            
  5.     Call ChildForm.Carga_RegistroSeleccionado(oRows)  
  6. Catch ex as exception
  7.        messagebox.show ex.message
  8. finnally
  9.     ' .........    
  10. end try
  11.  

Cita de: "ricklopezz"
Tuve que hacerlo de otra manera que publicaré más adelante para gente que tenga el mismo problema.
En programación hay varios caminos para hacer la misma cosa... unas más sencillas y otras más complejas, sin embargo resulta absurdo hacer complejo una cosa que de por si es sencilla, aunque lo importante muchas veces es que funcione...

Cita de: "ricklopezz"
, ya que te falta muchisima humildad para lograrlo.
Claro, claro, fíjate si soy arrogante  que en vez de pedirte por favor ( y por favor quita esa coletilla  ) te lo exigido, porque un arrogante nunca pide, exige. Fíjate si soy arrogante  que la premisa para contestarte es que me adores, me pagues, me lisonjees contínuamente, y como no lo has hecho no te he respondido, fíjate si soy arrogante  que en vez de pedirte que te expreses como una persona te he exigido que te expreses como un esclavo... claro, si leyendo mi mensaje se ve clarísimo mi falta de educación y mi nula humildad...

Las personas hablan sin decir a cada momento: si bwana, no bwana, gracias bwana: Si no fuera humilde eso me inflaría el ego, precisamente porque soy humilde, me desagradan esas frases innecesarias y precisamente porque soy humilte te he pedido por favor que te expreses como una persona. Si te sientes agradecido es suficiente que cuando soluciones tu problema te pases a dejar un mensaje diciendo 'me funcionó, pero no para agradecerme a mi nada (yo no necesito ni requiero agradecimientos de ningún tipo), sino para ayudar a otros, cuando busquen si un problema está resulto o no eso les ayuda a no perder tiempo.

Si te has enfadado será porque no has entendido mi mensaje o será porque has hecho un esfuerzo supremo en humillarte para 'agradecer al uso' esperando con ello recibir algún trato de favor y ahora te sientes dolido porque descubres que no había hecho falta. Tu mismo.
«Ma non troppo»
----> ModoVacaciones = False<----

ricklopezz

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #6 en: Jueves 18 de Junio de 2009, 22:44 »
0
Ja,ja,ja,ja


Te dolio verdaD?

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Error al abrir una forma en Windows Form
« Respuesta #7 en: Jueves 18 de Junio de 2009, 23:01 »
0
Cita de: "ricklopezz"
Ja,ja,ja,ja  
La carcajada distingue al loco y al infeliz... se rié sin ganas y de cualquier cosa donde nadie encuentra gracia.

Cita de: "ricklopezz"
Te dolio verdaD?
No. Me avergüenza que gente como tú, se vaya arrastrando como gusano... y cuando algo le molesta (normalmente por su escaso cerebro) se revela cual serpiente, odiosa y cargada de veneno.
«Ma non troppo»
----> ModoVacaciones = False<----