Claudio,
No lo probé, pero como abrís el formulario de forma modal,
creo que así debería andar:
Public Class tb
Inherits System.Windows.Forms.TextBox
Private blnYaAbrio As Boolean = False
Private Sub tb_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.GotFocus
If Not blnYaAbrio Then
Dim frm As New frmCaptura
Try
If Not blnYaAbrio Then
blnYaAbrio = True
frm.showdialog(Me)
End If
Catch ex As Exception
Throw ex
Finally
blnYaAbrio = False
End Try
End If
End Sub
End Class
De: [email protected] [mailto:[email protected]] En nombre de Claudio
Speroni
Enviado el: viernes, 14 de octubre de 2011 13:12
Para: [email protected]
Asunto: [puntonet] Windows Form
Estimados, estoy trabajando en VS 2008 y necesito hacer lo siguiente y no sé
cómo resolverlos, por eso les pido ayuda
Tengo un control Texbox que necesito que cada vez que haga foco en él se
abra un formulario, esto lo hago de la siguiente manera
Dentro de un control propio heredado de Windows.forms.textbox, en el método
GotFocus abro un formulario (frmCaptura)
Public Class tb
Inherits System.Windows.Forms.TextBox
Private Sub tb_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.GotFocus
Dim frm As New frmCaptura
Try
frm.showdialog(Me)
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
Hasta acá todo bien, el problema se me presenta cuando cierro el formulario
frmCaptura y vuelve a tomar foco el Textbox ya que se vuelve a ejecutar el
método GotFocus y abre nuevamente el formulario
Probé creando una variable privada para saber si ya tomo foco alguna vez el
TextBox poniéndola en true en el gotFocus y en False en el LostFocus, acá se
me presenta otro problema,
Cuando abro el formulario en el gotfocus, también se ejecuta el evento
LostFocus ya que el control pierde foco y la variable se setea en false y
con esto volvemos a empezar, cuando cierro el formulario se vuelve a
ejecutar el método Gotfocus y abre nuevamente el formulario frmCaptura,
Public Class tb
Inherits System.Windows.Forms.TextBox
Private blnYaAbrio As Boolean = False
Private Sub tb_GotFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.GotFocus
Dim frm As New frmCaptura
Try
If Not blnYaAbrio Then
blnYaAbrio = True
frm.showdialog(Me)
End If
Catch ex As Exception
Throw ex
End Try
End Sub
Private Sub tb_LostFocus(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.LostFocus
Try
blnYaAbrio = False
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
Es decir estoy en un bucle y no sé cómo resolverlo
Espero haber sido claro, cualquier cosa pregunten así me ayudan a resolver
este problema
Gracias de antemano
Claudio