Správičky 2 270 Blogy 577 Fórum 14 074

Dialógové okno BrowseForFolder

spigi - 5. 3. 2003 12:03 - 6852 views

Tak ma napadlo, ako by sa dalo otvoriť dialógové okno v .NET na výber adresára, niečo ako poskytovala API funkcia ShBrowseForFolder.

Po troške pátrania v .NET Frameworku, som prišiel na to, že v .NET Frameworku neexistuje priamo funkcia, ktorá by mi s týmto pomohla. A tak prišiel na rad internet :-)

Podľa informácii z Microsoftu vo verzii .NET Framework 1.1 (ktorá má výjsť v najbližšej dobe, spolu s Visual Studio 2003 a Windows 2003 Servrom) má byť v namespace System.Windows.Forms tieda System.Windows.Forms.FolderBrowserDialog.
Opravené 16.3.2003.: Dnes som si úspešne nainštaloval .NET Framework 1.1 a musim potvrďiť, že táto trieda už je obsiahnutá v tejto verzii.

Lenže v stávajúcej verzii 1.0 neexistuje a tak máme dve možnosti.

1. Použiť COM Interop a naďalej používať API funkciu ... príklad nájdete na webe Microsoftu http://support.microsoft.com/default.aspx?scid=kb;en-us;Q306285. Na tejto stránke je kompletný popis a aj zdrojový kód ukážkovej aplikácie.

2. Na webe www.wintoolzone.com nájdete DLL Assembly, ktorá obsahuje túto funkciu a je kompletne napísaná v managed code. http://www.wintoolzone.com/downloads/bd.zip

Doplnené 9.4.2003.
Niekde na webe som ešte našiel jedno riešenie. Potrebujeme si pridať referenciu na System.Design.dll
Class BrowseForFoldersDialog
    
' the Description that appears in the dialog
    Dim m_Description As String

    Property Description()
As String
        Get
            Return m_Description
        End
Get
        Set(
ByVal Value As String)
            m_Description
= Value
        End
Set
    End
Property

    
' the path returned by the dialog
    Dim m_Path As String

    Property Path()
As String
        Get
            Return m_Path
        End
Get
        Set(
ByVal Value As String)
            m_Path
= Value
        End
Set
    End
Property

    
' the ShowDialog method
    Function ShowDialog() As System.Windows.Forms.DialogResult
        Dim fb
As New FolderBrowser(Me)
        Return fb.ShowDialog()
    End
Function

    
' an inner private class that inherits from a .NET Framework class
    ' we need this class because we want to access protected members
    Private Class FolderBrowser
        Inherits System.Windows.Forms.Design.FolderNameEditor

        Dim parent
As BrowseForFoldersDialog

        
' store a reference to the outer object, so that its
        ' private properties can be accessed
        Sub New(ByVal parent As BrowseForFoldersDialog)
            Me.parent
= parent
        End
Sub

        
' show the dialog
        Function ShowDialog() As System.Windows.Forms.DialogResult
            Dim fb
As New _
            System.Windows.Forms.Design.FolderNameEditor.FolderBrowser()
            fb.Description
= parent.m_Description
            ShowDialog
= fb.ShowDialog()
            If ShowDialog
= Windows.Forms.DialogResult.OK Then
                parent.m_Path
= fb.DirectoryPath
            End
If
        End
Function
    End
Class
End Class

Ing. Igor Stanek, ASP.NET MVP, MCP

Som spoluzakladateľom a spolumajiteľom spoločnosti CHASTIA s.r.o., Poprad (www.chastia.com). V spoločnosti pôsobím ako konateľ a Software Architect.

Prevádzkujem internetový portál na online prevod jednotiek na internete www.prevody.sk a prvý internetový portál o technológii Microsoft .NET na Slovensku www.vyvojari.sk (bývalé www.AspNet.sk).

Som držiteľom certifikácie Microsoft Certified Professional a zo strany Microsoftu som už 6 rokov za sebou ocenený titulom Microsoft Most Valuable Professional za kompetenciu "ASP.NET/IIS".

Ďalšie info o mne nájdete na mojej osobnej stránke www.spigi.sk.

Článkov: 105, Správičiek: 13, Príspevkov vo fóre: 560, Príspevkov v blogu: 124, Bodov: 15560
Najaktívnejší č.: 3
Profil používateľa

Reakcie

Titulok:


Meno:


Url:
Koľko je 22 + 4? (ochrana proti spamu)

Komentár:


Najaktívnejší užívatelia
1. 35110 b. photo vlko
2. 16735 b. photo T
3. 15560 b. photo spigi
4. 6635 b. photo dudok
5. 5705 b. photo slavof
6. 5205 b. photo siro
7. 4745 b. photo duracellko
8. 3780 b. photo Liero
9. 3690 b. photo lubolacko
10. 3625 b. photo jakub