elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Llamar a un form y poner en espera la funcion que lo llamo... (Resuelto)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Llamar a un form y poner en espera la funcion que lo llamo... (Resuelto)  (Leído 8,036 veces)
Zeroql


Desconectado Desconectado

Mensajes: 957


Todo lo k sucede sucede por una razon


Ver Perfil WWW
Llamar a un form y poner en espera la funcion que lo llamo... (Resuelto)
« en: 26 Agosto 2010, 18:06 pm »

Buenas. pues es simplemente lo que dice el titulo
resulta que tengo una funcion para guardado de datos, pero necesito llamar un form que me muestre otros datos para seleccionarlos. el punto es que los form son form hijos asi que no se puede usar el showdialog.

como puedo llamar al form y hacer k la operacion de la funcion se pause hasta que el form se descarge???

De ante mano muchas gracias.


« Última modificación: 27 Agosto 2010, 21:02 pm por Zeroql » En línea

Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #1 en: 26 Agosto 2010, 18:36 pm »

No puedes usar ShowDialog? Pues puedes hacer que el form (en donde pides los otros datos para seleccionar) no sea hijo del otro, sino que sea Modal,llamando SHowDialog, y ya,.. debería ser la vía,  a menos de que no haya entendido tu pregunta :)

De todos modos si quieres detener la ejecución hasta que pase algo, puede usar AutoResetEvent. Saludos!


En línea

Zeroql


Desconectado Desconectado

Mensajes: 957


Todo lo k sucede sucede por una razon


Ver Perfil WWW
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #2 en: 27 Agosto 2010, 03:28 am »

No puedo usar showdialog, por que el form tambien hace parte de un mdiparent, y me tira error al llamaro con showdialog.
autoResetEven, no me sirve, avanza normalmente la funcion que llama al form.
alguien tiene otra idea?
En línea

Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#

seba123neo


Desconectado Desconectado

Mensajes: 3.621


"No quiero creer, quiero saber" - Carl Sagan


Ver Perfil WWW
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #3 en: 27 Agosto 2010, 03:47 am »

Hola, proba esto en un boton del form padre....

Código
  1.        Dim vFormHijo As New FormHijo
  2.        vFormHijo.MdiParent = Me.MdiParent
  3.        vFormHijo.ShowDialog()
  4.  
  5.        MsgBox("Cerraste el form")

saludos.
En línea

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 503



Ver Perfil
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #4 en: 27 Agosto 2010, 11:56 am »

No puedo usar showdialog, por que el form tambien hace parte de un mdiparent, y me tira error al llamaro con showdialog.
autoResetEven, no me sirve, avanza normalmente la funcion que llama al form.
alguien tiene otra idea?

Puedes declarar variables bool por ejemplo:

Código
  1. public bool form2Cerrado = false;
Código
  1. private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  2. {
  3.     form2Cerrado = true;
  4. }

Y utilizas el primer formulario para saber si esta cerrado o no, luego de cerrarse el form2 envias el valor de una variable (puede ser bool) al formulario que necesitaba esperar a que se cierre en "form2" para que continue su trabajo.

Es una forma "cutre" de hacerlo pero se ajusta a lo que pides, por otro lado deberias revisar (replantear) el diseño de tu programa, no deberias necesitar utilizar los form de esa manera.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Zeroql


Desconectado Desconectado

Mensajes: 957


Todo lo k sucede sucede por una razon


Ver Perfil WWW
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #5 en: 27 Agosto 2010, 16:08 pm »

seba123neo ya intente tu propuesta y tira el siguiente error

Un formulario que no es de nivel superior no se puede mostrar como un cuadro de diálogo modal. Quite el formulario de los formularios primarios que lo contengan antes de llamar a showDialog.

43H4FH44H45H4CH49H5 ti digo que eso de la varible es interesante, pero como la controlo en la funcion???

heee resulta kelo llamo en modal por la razon de que la funcion que lo llama es de datos y el form es para agregar nuevos datos, cuando devuelve el control a la funcion debe recargar la lista de datos con el agregado por el form. por eso ese diseño
En línea

Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 503



Ver Perfil
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #6 en: 27 Agosto 2010, 18:34 pm »

Bueno de pasada, mira este code:
Form1

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Ventanas
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        Form2 f2 = new Form2();
  15.        Form3 f3 = new Form3();
  16.        public Form1()
  17.        {
  18.            InitializeComponent();
  19.        }
  20.  
  21.        private void button1_Click(object sender, EventArgs e)
  22.        {
  23.            f2.Show();
  24.            f3.Show();
  25.            timer1.Start();
  26.        }
  27.  
  28.        private void timer1_Tick(object sender, EventArgs e)
  29.        {
  30.            if (f2.form2Closed)
  31.            {
  32.                timer1.Stop();
  33.                f3.setText("Form2 Closed");
  34.                f2.form2Closed = false;
  35.            }
  36.        }
  37.    }
  38. }
  39.  

Form2

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Ventanas
  11. {
  12.    public partial class Form2 : Form
  13.    {
  14.        public bool form2Closed = false;
  15.        public Form2()
  16.        {
  17.            InitializeComponent();
  18.        }
  19.  
  20.        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
  21.        {
  22.            form2Closed = true;
  23.        }
  24.    }
  25. }
  26.  

Form3

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Ventanas
  11. {
  12.    public partial class Form3 : Form
  13.    {
  14.        public Form3()
  15.        {
  16.            InitializeComponent();
  17.        }
  18.        public void setText(string value)
  19.        {
  20.            label1.Text = value;
  21.        }
  22.    }
  23. }
  24.  

Simplemente en el form1  hay un button que muestra el form2 y el form3 cuando se cierra el form2 se accede desde el form1 a setText(string value) del form3 y cambiamos el contenido del label1 (no cambie directamente el contenido del label para mostrar como hacerlo en otro caso).

Ahora puedes hacer algo similar para pausar una tarea u otra cosa.
Eso ya depende de lo que hagas, lo del timer puede suprimirse pero creo que es lo mas sencillo de hacer.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Zeroql


Desconectado Desconectado

Mensajes: 957


Todo lo k sucede sucede por una razon


Ver Perfil WWW
Re: Llamar a un form y poner en espera la funcion que lo llamo...
« Respuesta #7 en: 27 Agosto 2010, 21:00 pm »

Muchas gracias por el code 43H4FH44H45H4CH49H5
pero solucione todo de una forma mas facil.
usando una variable global que cuando se llame form este es true, y al cerrar le form este comprueba si es true, si es asi, que recarge lo que necesito....
igual a todos muchas gracias por su tiempo, y dedicacion, espermos que a alguien que tambien necesite lo mismo le puedan servir los codes y ayudas propuestos., igual tambien me puede servir en otro programa que tengo empezado el code...
En línea

Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo.
/.-ZEROQL.-\   -----  #937675#

seba123neo


Desconectado Desconectado

Mensajes: 3.621


"No quiero creer, quiero saber" - Carl Sagan


Ver Perfil WWW
Re: Llamar a un form y poner en espera la funcion que lo llamo... (Resuelto)
« Respuesta #8 en: 28 Agosto 2010, 06:11 am »

perdona no me di cuenta que lo abre fuera del padre...
En línea

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines