Retroceder   Foros del Web > Programación para sitios web > .NET > win forms

Respuesta
 
Herramientas Desplegado
Antiguo 24-abr-2006, 12:13   #1 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.552
Enviar un mensaje por MSN a RootK
Evitar que se abra la misma ventana

Hola, muchos han preguntado en aplicaciónes de escritorio como evitar que cuando dés un click se abra la Forma y que si lo vuelves a presionar no se vuelva a abrir... pues bien.. aqui les dejo un ejemplo que por cierto va a estar disponible también en las faq´s...

Ejemplo para Formularios MDI

Supongamos que tengo Form1 y Form2.

Form1 (parent) uno tiene un boton para abrir el Form2 (child) de ésta forma:

C#
Cita:
private void button1_Click(object sender, System.EventArgs e) {
Form2 childForm = null;
//Barremos las formas que hay en el parent para encontrar la referencia
foreach(Form f in this.MdiChildren) {
if(f is Form2) {
childForm = (Form2) f;
break;
}
}
//Si la encontró ya no necesita la instancia solo la mostramos
if( childForm != null) {
childForm.Show();
childForm.Focus();
}
else {
//No se ha creado por lo tanto generamos la instancia
childForm = new Form2();
childForm.MdiParent = this;
childForm.Show();
childForm.Focus();
}

}
VB.Net
Cita:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim childForm As Form2
//Barremos las formas que hay en el parent para encontrar la referencia
For Each f As Form In Me.MdiChildren
If TypeOf f Is Form2 Then
childForm = CType(f, Form2)
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 Form2
childForm.MdiParent = Me
childForm.Show()
childForm.Focus()
End If
End Sub
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Última edición por RootK; 24-abr-2006 a las 13:05.
RootK está desconectado   Responder Citando
Antiguo 24-abr-2006, 15:54   #2 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.552
Enviar un mensaje por MSN a RootK
Por cierto, les mando el ejemplo para un formulario normal (porque el ejemplo de arriba es para MDI)

C#
Cita:
private void button1_Click(object sender, System.EventArgs e) {
foreach (Form f in this.OwnedForms) {
if (f is Form2) {
f.Show();
f.Focus();
return;
}
}

Form2 f2 = new Form2();
this.AddOwnedForm(f2);
f2.Owner = this;
f2.Show();

}
y en el formulario 2 no olviden liberarlo...

Cita:
private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
Owner.RemoveOwnedForm(this);
}
vb.net

Cita:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

For Each f As Form In Me.OwnedForms
If TypeOf f Is Form2 Then
f.Show()
f.Focus()
Exit Sub
End If
Next

Dim f2 As New Form2
Me.AddOwnedForm(f2)
f2.Owner = Me
f2.Show()

End Sub
Formulario 2:

Cita:
Private Sub Form2_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Owner.RemoveOwnedForm(Me)
End Sub
Salu2 y cualquier comentario es bienvenido..
RootK está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 1 votos, 5,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 06:22.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93