el Guille, la Web del Visual Basic, C#, .NET y más...

Simular OpenFileDialog en Smartphone

 
Publicado el 28/Dic/2007
Actualizado el 28/Dic/2007
Autor: Guillermo 'guille' Som

Los Smartphone no permiten usar la clase OpenFileDialog para seleccionar un fichero, por eso me he fabricado un formulario que simula el comportamiento de esa clase.

 


 

Introducción:

Los Smartphone no permiten usar la clase OpenFileDialog para seleccionar un fichero, por eso me he fabricado un formulario que simula el comportamiento de esa clase. Al menos así es en las versiones de .NET Compact Framework que hay a la hora de escribir estas líneas.

Debido a que dependiendo de la versión del .NET que usemos habrá unas u otras propiedades disponibles en los controles que he usado (aunque básicamente uso un control ListView), he creado dos versiones de este componente, una es para usar con Visual Studio 2003 y la otra es para usar con Visual Studio 2005 o Visual Studio 2008, aunque el código de Visual Studio 2003 será válido para las demás versiones, (aunque no al revés).

Debido a esa diferencia, te voy a mostrar en páginas independientes cada una de estas dos versiones del formulario.

Ese formulario lo he definido como Friend (internal en C#), con idea de que no se use directamente desde la aplicación, sino que en su lugar se usen unas clases. Por supuesto, esta bajada del nivel de visibilidad tiene sentido si este formulario está dentro de una DLL, que es como yo lo estoy utilizando. Pero aunque el formulario se pueda usar directamente, mi recomendación es hacerlo desde las clases que te muestro a continuación.

 

Para usar la clase OpenFileDialog, lo harás como es costumbre con esa misma clase (cuando está disponible):

Dim oFD As New elGuille.Util.Mobile.Smartphone.OpenFileDialog
With oFD
    .Title = "Seleccionar MP3"
    .Filter = "Sonidos (*.mp3;*.wav)|*.mp3;*.wav|Todos los tipos (*.*)|*.*"
    .FileName = txt.Text
    If .ShowDialog = DialogResult.OK Then
        txt.Text = .FileName
    End If
End With

Aquí tienes las clases que se encargan de usar el formulario.

 

Las clases: FileDialog y OpenFileDialog

'------------------------------------------------------------------------------
' FileDialog                                                        (26/Dic/07)
' Clases para simular los cuadros de diálogos de seleccionar ficheros
' internamente usan el formulario fOpenFileDialog
'
' Estas clases se pueden usar para suplir la carencia de las clases
' OpenFileDialog y SaveFileDialog en los Smartphone (o Mobile Standard)
'
' ©Guillermo 'guille' Som, 2007
'------------------------------------------------------------------------------
Option Strict On

Imports Microsoft.VisualBasic
Imports System

Namespace elGuille.Util.Mobile.Smartphone

    ''' <summary>
    ''' Para simular el OpenFileDialog en los Smartphone (Windows Mobile Standard)
    ''' </summary>
    ''' <remarks></remarks>
    Public NotInheritable Class OpenFileDialog
        Inherits FileDialog

        Sub New()
            MyBase.mnuSeleccionar = "Abrir"
        End Sub
    End Class

    Public MustInherit Class FileDialog
        Private ofd As New fOpenFileDialog

        Protected Property mnuSeleccionar() As String
            Get
                Return ofd.mnuSeleccionar.Text
            End Get
            Set(ByVal value As String)
                ofd.mnuSeleccionar.Text = value
            End Set
        End Property

        Public Property Title() As String
            Get
                Return ofd.Title
            End Get
            Set(ByVal value As String)
                ofd.Title = value
            End Set
        End Property

        Public Property Filter() As String
            Get
                Return ofd.Filter
            End Get
            Set(ByVal value As String)
                ofd.Filter = value
            End Set
        End Property

        Public Property FileName() As String
            Get
                Return ofd.FileName
            End Get
            Set(ByVal value As String)
                ofd.FileName = value
            End Set
        End Property

        Public Property BackColor() As System.Drawing.Color
            Get
                Return ofd.BackColor
            End Get
            Set(ByVal value As System.Drawing.Color)
                ofd.BackColor = value
            End Set
        End Property

        Public Property ForeColor() As System.Drawing.Color
            Get
                Return ofd.ForeColor
            End Get
            Set(ByVal value As System.Drawing.Color)
                ofd.ForeColor = value
            End Set
        End Property

        Public Function ShowDialog() As System.Windows.Forms.DialogResult
            Return ofd.ShowDialog()
        End Function
    End Class
End Namespace

 

Espero que te sea de utilidad.

Nos vemos.
Guillermo

 

 


Nota:
La mayoría del código de ejemplo, contienen más cosas de las indicadas en el título o link, por tanto te recomiendo que le eches un vistazo por si está lo que realmente andas buscando.

También quiero recordarte que en la mayoría de los casos, al menos en los links con fecha 15 de enero 2002 y posteriores en los que "el Guille" es el autor (yo), el mismo código se muestra tanto para Visual Basic como para C#, salvo casos muy concretos en los que se explican cosas específicas de cada lenguaje... o porque no he tenido tiempo de convertirlo, je, je.

Notas:
-El código mostrado en estas páginas es de libre uso, el único requisito para poder usarlo, es citar la procedencia del mismo.
-Para poder usar los tutoriales o los artículos, por ejemplo para publicarlos en otro sitio, tendrás que pedir autorización al autor antes de publicarlos (completo o en parte), y si es una colaboración, mándame copia de esa autorización a mi cuenta de correo: mensaje EN elguille.info.
Gracias.


 


Código de ejemplo (comprimido):

El código de ejemplo es el mostrado en esta página, de haber algún proyecto con el código completo, estará en cda una de las páginas en las que muestro el código del formulario.


 


La fecha/hora en el servidor es: 23/12/2024 18:23:04

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024