Foros del Web » Programación para mayores de 30 ;) » .NET »

Evitar que se abra la misma ventana

Estas en el tema de Evitar que se abra la misma ventana en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/04/2006, 12:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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 . . .

Exentrit - Soluciones SharePoint & Net

Última edición por RootK; 24/04/2006 a las 13:05
  #2 (permalink)  
Antiguo 24/04/2006, 15:54
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:01.