• Domingo 22 de Diciembre de 2024, 15:51

Autor Tema:  Detener la ejecución de métodos  (Leído 9138 veces)

lvgstark

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Detener la ejecución de métodos
« en: Domingo 28 de Febrero de 2010, 23:38 »
0
Hola a todos,
Me estreno en el blog con una duda.

He realizado una miniaplicación que interactua con una base de datos.

Uno de los métodos, llama a varios métodos más. Y me encuentro con que el primer método me da una excepción que trato con "Try/Catch", y me gustaría que no continuara con el resto de métodos.

   private void btVerLineas_Click(object sender, EventArgs e)
        {
            verificardatos();
            try
            {(...) continua el código


verificar datos, verifica si los campos están informados, y en ese método si hay algún campo que no está bien informado me gustaría que no hiciera nada más.

Lo que he encontrado por ahí, es que debo hacer un this.close (pero no quiero cerrar la ventana).
También he probado con Return, pero me continua leyendo el código.

Mi duda, es si hay algun comando que simplemente detenga la ejecución y se quede en el punto de partida? o deje de leer el resto de métodos, o debo jugar todo el rato con "Try/Catch".

Gracias y espero que me haya explicado bien.

eltruhanero

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: Detener la ejecución de métodos
« Respuesta #1 en: Lunes 1 de Marzo de 2010, 08:27 »
0
Hola, disculpa no te entiendo la pregunta.

Podrias re-plantear la pregunta?

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Detener la ejecución de métodos
« Respuesta #2 en: Lunes 1 de Marzo de 2010, 11:17 »
0
bueno, segun lo he podido entender yo si en el metodo verificar datos hay algo que no te guste lo que quieres es que el metodo del evento btverlineas no continue.

creo que la mejor manera seria modificar tu metodo verificardatos() que supongo lo tienes declarado como void. Pues yo lo declararia como bool, es decir:

Código: C#
  1. private bool verificardatos()
  2. {
  3. ....
  4. }
  5.  


en este metodo si algo no esta bien, que supongo lo compruebas con if() y else
pues si no esta bien pones un return false;
y si es correcto todo pones un return true;

y ahora ya en el evento Click donde llamas a veridicar datos lo pones asi:
Código: C#
  1. if(verificardatos());
  2. {
  3. //codigo que quieras ejecutar en caso de estar todo bien
  4. }
  5. else
  6. {
  7. //codigo que quieras ejecutar si hay algo mal
  8. }
  9.  

Espero entiendas lo que quiero decir, y espero te sirva esta manera de hacerlo.
Si no es esto lo que estas buscando, ya lo mejor seria que postearas algo mas de codigo.

Saludos

lvgstark

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Detener la ejecución de métodos
« Respuesta #3 en: Miércoles 3 de Marzo de 2010, 13:07 »
0
Gracias por responder,
Creo que más o menos he entendido tu idea Tannke. De todas maneras intentaré explicar un poco mejor y poner código:

El método verificar datos, comprueba si está marcado algún valor en varios listbox
Código: C#
  1.  public void verificardatos()
  2.         {
  3.  
  4.             if (lbTarifas.SelectedIndex == -1)
  5.             {
  6.                 MessageBox.Show("Debe seleccionar una Tarifa para continuar");
  7.                 return;
  8.             }
  9.  
  10.             if (lbSeries.SelectedIndex == -1)
  11.             {
  12.                 MessageBox.Show("Debe seleccionar una Serie para continuar");
  13.                 return;
  14.             }
  15.  
  16.             if (lbDocumentos.SelectedIndex == -1)
  17.             {
  18.                 MessageBox.Show("Debe seleccionar una Número de documento para continuar");
  19.                 return;
  20.             }
  21.  
  22.         }
  23.  

En un formulario tengo varios botones, que hacen operaciones y cargan datos, y antes de que hagan nada lo que hago es que verifiquen que haya datos marcados.

Código: C#
  1.  private void btVerLineas_Click(object sender, EventArgs e)
  2.         {
  3.             verificardatos();
  4.             try
  5.             {
  6.                 dataGridView2.DataSource = FillTable("SELECT ....script de SQL");
  7.             }
  8.             catch (Exception ex)
  9.             {
  10.                 MessageBox.Show(ex.Message.ToString(), "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
  11.             }
  12.            
  13.         }
  14.  


Actualmente, si hay algun valor que no está informado, verificar datos me dice que el listbox no está informado, pero me pasa al try, y me intenta llenar el datagridview, y ahí me peta.

Mi duda es, y por lo que me comentas, en el método verificar datos, tengo que hacer que devuelva un valor para que me indique que faltan datos por informar.
y en el btVerLineas, hacer el If condicional que comentas?

Gracias de antemano

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Detener la ejecución de métodos
« Respuesta #4 en: Miércoles 3 de Marzo de 2010, 13:50 »
0
Buenas de nuevo.
Mira haciendolo como te dije en el post anterior y adaptandolo a tu codigo podrias hacerlo asi:
Código: C#
  1.  public bool verificardatos() //cambiado void por bool
  2.         {
  3.  
  4.             if (lbTarifas.SelectedIndex == -1)
  5.             {
  6.                 MessageBox.Show("Debe seleccionar una Tarifa para continuar");
  7.                 return false;
  8.             }
  9.  
  10.             if (lbSeries.SelectedIndex == -1)
  11.             {
  12.                 MessageBox.Show("Debe seleccionar una Serie para continuar");
  13.                 return false;
  14.             }
  15.  
  16.             if (lbDocumentos.SelectedIndex == -1)
  17.             {
  18.                 MessageBox.Show("Debe seleccionar una Número de documento para continuar");
  19.                 return false;
  20.             }
  21.             return true;
  22.  
  23.         }
  24.  
Código: C#
  1.  private void btVerLineas_Click(object sender, EventArgs e)
  2.         {
  3.            
  4.             if(verificardatos());
  5.             {
  6.                 dataGridView2.DataSource = FillTable("SELECT ....script de SQL");
  7.             }
  8.                        
  9.         }
  10.  
espero te sirva.
Si quieres puedes mantener el try catch por si saltara cualquier otro error.

Un saludo

lvgstark

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Detener la ejecución de métodos
« Respuesta #5 en: Miércoles 3 de Marzo de 2010, 13:53 »
0
Me encanta la solución, muy Elegante.

La pongo en práctica.

merci tannkee