Visual Basic.NET - ¿Cómo puedo evitar que me abra otra vez un cuadro de diálogo?

 
Vista:
sin imagen de perfil
Val: 229
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

¿Cómo puedo evitar que me abra otra vez un cuadro de diálogo?

Publicado por José Vicente (113 intervenciones) el 20/08/2021 12:01:23
Hola, tengo una aplicación en la que al seleccionar un elemento de un combobox me abre un cuadro de diálogo donde selecciono un archivo para abrirlo. Mi problema es que en el botón que tengo para limpiar los combobox y los textbox al pulsarlo, me vuelve a abrir el cuadro de diálogo sin yo haber puesto ningún código al respecto el el botón.
¿Puede alguien echarme una mano?. Gracias.

El código del botón que limpia el formulario es:
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
Private Sub limpiar_btn_Click(sender As Object, e As EventArgs) Handles limpiar_btn.Click
 
         Dim objfunciones As New Funciones
 
        objfunciones.LimpiarTboxes(hematimetria_gbox)
        objfunciones.LimpiarTboxes(GroupBox2)
        objfunciones.LimpiarTboxes(GroupBox3)
        objfunciones.LimpiarTboxes(GroupBox4)
 
        fecha_mtbox.Clear()
        fecha_mtbox.Focus()
 
        maximo_cbox.SelectedIndex = -1
        minimo_cbox.SelectedIndex = -1
        analiticaNum_cbox.SelectedIndex = -1
 
        minValor_lbl.Visible = False
        maxValor_lbl.Visible = False
 
        'INSERTAMOS UN 0 EN CADA TEXTBOX POR DEFECTO
 
        Dim ObjControl As Control
 
        For Each ObjControl In Me.hematimetria_gbox.Controls
 
            If TypeOf ObjControl Is TextBox Then
 
                ObjControl.Text = "0"
                CType(ObjControl, TextBox).ReadOnly = False
 
            End If
 
        Next
 
        For Each ObjControl In Me.GroupBox2.Controls
 
            If TypeOf ObjControl Is TextBox Then
 
                ObjControl.Text = "0"
                CType(ObjControl, TextBox).ReadOnly = False
 
            End If
 
        Next
 
        For Each ObjControl In Me.GroupBox3.Controls
 
            If TypeOf ObjControl Is TextBox Then
 
                ObjControl.Text = "0"
                CType(ObjControl, TextBox).ReadOnly = False
 
            End If
 
        Next
 
        For Each ObjControl In Me.GroupBox4.Controls
 
            If TypeOf ObjControl Is TextBox Then
 
                ObjControl.Text = "0"
                CType(ObjControl, TextBox).ReadOnly = False
 
            End If
 
        Next
 
    End Sub

y el código de abrir los ficheros es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub AnaliticaNum_cbox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles analiticaNum_cbox.SelectedIndexChanged
 
[...]
 
'ABRIMOS LA CARPETA DE LOS pdf
 
        OpenFileDialog1.InitialDirectory = "D:\Documentos\Escaneados\Informe_medico_infarto_2019\Analíticas"
        OpenFileDialog1.Filter = "Pdf| *.pdf|Todos|*.*"
 
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
 
            archivo = OpenFileDialog1.FileName.ToString
            Proc.StartInfo.FileName = archivo
            Proc.Start()
 
        End If
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Santiago
Val: 17
Ha disminuido su posición en 72 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

¿Cómo puedo evitar que me abra otra vez un cuadro de diálogo?

Publicado por Santiago (27 intervenciones) el 21/08/2021 20:10:21
Hola:

Te cuento lo que creo que te puede ocurrir, porque me haría falta más información.

El evento "AnaliticaNum_cbox_SelectedIndexChanged" se ejecuta cuando cambias un elemento de "AnaliticaNum_cbox", que entiendo que es un ComboBox.

Cuando "limpias", haces "analiticaNum_cbox.SelectedIndex = -1" por lo que estás ejecutando el evento anterior y se ejecuta el código que abre el PDF o lo que sea.

Yo pondría una variable a nivel de formulario que sea "Dim bloquearPantalla as Boolean" y antes de limpiar la pones a "True" y al acabar de limpiar la pones a "False".

En el evento "AnaliticaNum_cbox_SelectedIndexChanged", pones como primera línea:

If bloquearPantalla then Exit Sub

Así no se ejecuta cuando la pantalla está bloqueada.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 229
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

¿Cómo puedo evitar que me abra otra vez un cuadro de diálogo?

Publicado por José Vicente (113 intervenciones) el 21/08/2021 20:58:46
Gracias, no lo había pensado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar