none
Como abro un archivo .pdf VB.NET

    Question

  • Hola! quería saber cómo abro un archivo en pdf que se encuentra en la misma carpeta que la aplicación? Es un manual de como funciona la aplicación para poder abrirlo desde VB con la tecla F1

    Private Sub Inicio_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
            If e.KeyCode = Keys.F1 Then


            End If

    End Sub

     

    Saludos y gracias!!

    Friday, October 15, 2010 7:34 PM

Answers

  • hola

    podrias usar

    Private Sub Inicio_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
           
        If e.KeyCode = Keys.F1 Then
            Process.Start("c:\temp\archivo.pdf")
        End If

    End Sub

    recuerda agregar el : Imports System.Diagnostics

    y la referencia a System.Diagnostics

     

    Process Class

    ProcessStartInfo Class

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Friday, October 15, 2010 8:13 PM
  • Hola:

    Si el formulario tiene controles, cosa que es lo más natural, me parece a mí que con la solución que te ha indicado Leandro Tuttini, va a ser un poco complicado que se abra el documento PDF cuando el usuario pulse la tecla F1, porque al estár ejecutando el código en el evento KeyDown del formulario, éste nunca se llegará a ejecutar, salvo que el formulario no contenga ningún control, o bien, establezcas el valor True a la propiedad KeyPreview del formulario, para que éste reciba los eventos del teclado antes de que pasen al control que actualmente tiene el foco:

        Private Sub Form1_Load( _
                     ByVal sender As Object, _
                     ByVal e As EventArgs) Handles MyBase.Load

            KeyPreview = True

        End Sub

         Private Sub Inicio_KeyDown( _
              ByVal sender As System.Object, _
              ByVal e As KeyEventArgs) Handles MyBase.KeyDown

            If e.KeyCode = Keys.F1 Then
                Process.Start("c:\temp\archivo.pdf")
            End If

        End Sub

    Pero para no estar pendientes de valores y eventos alguno, lo mejor que puedes hacer es sobrescribir el método ProcessCmdKey del formulario, para detectar la tecla que ha sido presionada en cualquier control del formulario, incluido éste último:

      Protected Overrides Function ProcessCmdKey( _
            ByRef msg As System.Windows.Forms.Message, _
            ByVal keyData As System.Windows.Forms.Keys) As Boolean

            If (keyData = Keys.F1) Then
                Process.Start("C:\Temp\Archivo.pdf")
            End If

            Return MyBase.ProcessCmdKey(msg, keyData)

        End Function

    Y en cuanto a la referencia a System.Diagnostic, normalmente se encuentra referenciada en todos los nuevos proyectos de Visual Basic .net, y su espacio de nombres se encuentra importado a nivel de proyecto, por tanto, en principio no tienes que hacer nada para utilizar el método Start de la clase Process.

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    Saturday, October 16, 2010 2:27 PM
  • Hola , puedes hacer las referencias a los archivostal y como muestra softjaen y leandro , actuamente cuando el programa esta en vb designer la ruta de la aplicacion sera "ruta\debug\file.pdf" y alli buscar el archivo pdf lo que puedes hacer es cuando estes instalando la aplicacion permitas que el programa copie el archivo a la ruta de la aplicacion , pero si lo agregas directamente como recurso se te hara menos complicado.,  aqui te dejo un ejemplo

    Private Sub Inicio_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.F1 Then
    
          Dim DebugRuta As String = My.Application.Info.DirectoryPath & "\Ayuda.pdf"
    
    
          Process.Start(DebugRuta)
    
        End If
    
      End Sub

     

     

    Espero te ayude, Saludos....


    Mark the better answers for you,do not turn off your mind

    Visit http://www.melvinsofts.com

    Sunday, October 17, 2010 3:30 PM

All replies

  • hola

    podrias usar

    Private Sub Inicio_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
           
        If e.KeyCode = Keys.F1 Then
            Process.Start("c:\temp\archivo.pdf")
        End If

    End Sub

    recuerda agregar el : Imports System.Diagnostics

    y la referencia a System.Diagnostics

     

    Process Class

    ProcessStartInfo Class

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Friday, October 15, 2010 8:13 PM
  • Gracias! pero abrirá el archivo automaticamente estando en la misma carpeta que la aplicación?

    P.D: A qué te refieres con la referencia a System.Diagnostics


    Friday, October 15, 2010 8:18 PM
  • hola

    A qué te refieres con la referencia a System.Diagnostics

    me refiero a usar esta opcion

     

    Add References

    y agregar System.Diagnostics

    pero abrirá el archivo automaticamente estando en la misma carpeta que la aplicación?

    claro porque usara la aplciacion por defecto asignada a la extension

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Friday, October 15, 2010 8:24 PM
  • Gracias, pero en agregar referencia no me aparece la opción System.Diagnostic

    Se salta de System.Design a System.DirectoryService

    Friday, October 15, 2010 8:32 PM
  •  

    puede que ya tengas la referencia

    prueba agregando el Imports y ver si puedes usar la clase Process

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Friday, October 15, 2010 8:57 PM
  • Hola:

    Si el formulario tiene controles, cosa que es lo más natural, me parece a mí que con la solución que te ha indicado Leandro Tuttini, va a ser un poco complicado que se abra el documento PDF cuando el usuario pulse la tecla F1, porque al estár ejecutando el código en el evento KeyDown del formulario, éste nunca se llegará a ejecutar, salvo que el formulario no contenga ningún control, o bien, establezcas el valor True a la propiedad KeyPreview del formulario, para que éste reciba los eventos del teclado antes de que pasen al control que actualmente tiene el foco:

        Private Sub Form1_Load( _
                     ByVal sender As Object, _
                     ByVal e As EventArgs) Handles MyBase.Load

            KeyPreview = True

        End Sub

         Private Sub Inicio_KeyDown( _
              ByVal sender As System.Object, _
              ByVal e As KeyEventArgs) Handles MyBase.KeyDown

            If e.KeyCode = Keys.F1 Then
                Process.Start("c:\temp\archivo.pdf")
            End If

        End Sub

    Pero para no estar pendientes de valores y eventos alguno, lo mejor que puedes hacer es sobrescribir el método ProcessCmdKey del formulario, para detectar la tecla que ha sido presionada en cualquier control del formulario, incluido éste último:

      Protected Overrides Function ProcessCmdKey( _
            ByRef msg As System.Windows.Forms.Message, _
            ByVal keyData As System.Windows.Forms.Keys) As Boolean

            If (keyData = Keys.F1) Then
                Process.Start("C:\Temp\Archivo.pdf")
            End If

            Return MyBase.ProcessCmdKey(msg, keyData)

        End Function

    Y en cuanto a la referencia a System.Diagnostic, normalmente se encuentra referenciada en todos los nuevos proyectos de Visual Basic .net, y su espacio de nombres se encuentra importado a nivel de proyecto, por tanto, en principio no tienes que hacer nada para utilizar el método Start de la clase Process.

    Un saludo

     


    Enrique Martínez [MS MVP - VB]
    Saturday, October 16, 2010 2:27 PM
  • Hola , puedes hacer las referencias a los archivostal y como muestra softjaen y leandro , actuamente cuando el programa esta en vb designer la ruta de la aplicacion sera "ruta\debug\file.pdf" y alli buscar el archivo pdf lo que puedes hacer es cuando estes instalando la aplicacion permitas que el programa copie el archivo a la ruta de la aplicacion , pero si lo agregas directamente como recurso se te hara menos complicado.,  aqui te dejo un ejemplo

    Private Sub Inicio_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.F1 Then
    
          Dim DebugRuta As String = My.Application.Info.DirectoryPath & "\Ayuda.pdf"
    
    
          Process.Start(DebugRuta)
    
        End If
    
      End Sub

     

     

    Espero te ayude, Saludos....


    Mark the better answers for you,do not turn off your mind

    Visit http://www.melvinsofts.com

    Sunday, October 17, 2010 3:30 PM