vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Zugriff auf Prozedur von UserControl 
Autor: Dikn
Datum: 21.05.17 08:06

Hallo!
Ich habe ein dem Explorer ähnliches UserControl erstellt mit folgenden zusätzl. Funktionen:
- im Dropdownbereich: zusätzlich Angabe des Namens, Anzeige von leeren Laufwerken (mit Hinweis), entsprechende Symbole
- im Anzeigebereich Laufwerke: nur Symbol und Laufwerkname bzw. Hinweis auf leeres Laufwerk

geöffnetes Verzeichnis kann mit Klick auf einen Button gespeichert und mit einem weiteren Button wieder aufgerufen werden
Nach Klick auf einen Ordner im TreeView soll eine Sub-Prozedur zur Anzeige der enthaltenen Dateien aufgerufen werden. Ich hab's so gelöst: (vereinfachte Version)

Public Class Form1
  Private Sub Label1_TextChanged() Handles Label1.TextChanged
    showFiles(Me.Label1.Text)
  End Sub
 
  Private Sub showFiles(ByVal strSelectedPath As String)
    MsgBox("showFiles(" & strSelectedPath & ")")
  End Sub
End Class
Public Class FolderControl
  Private Sub FolderControl_Load() Handles Me.Load
    Me.TreeView1.Nodes.Add("C:")
    Me.TreeView1.Nodes(0).Nodes.Add("Test1")
    Me.TreeView1.Nodes(0).Nodes.Item(0).Nodes.Add("Test1_2")
    Me.TreeView1.Nodes(0).Nodes.Add("Test2")
    Me.TreeView1.Nodes(0).Expand
  End Sub
 
  Private Sub TreeView1_AfterSelect() Handles TreeView1.AfterSelect
    Me.ParentForm.Controls.Find("Label1",False).First.Text = _
      Me.TreeView1.SelectedNode.Text
  End Sub
End Class
Wie macht man's richtig ???
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff auf Prozedur von UserControl 
Autor: Manfred X
Datum: 21.05.17 11:48

Hallo!

[I]Ich habe ein dem Explorer ähnliches UserControl erstellt mit folgenden zusätzl. Funktionen:[/I]

Ein Usercontrol besitzt zunächst keine eigene Funktionalität, außer dem
allgemeinen Rahmen einer als Control verwendbaren Klasse.
Ist Dein Control von einem anderen (explorer-ähnlichen) Control abgeleitet (Inherits)?

[I]- im Anzeigebereich Laufwerke: nur Symbol und Laufwerkname bzw. Hinweis auf leeres Laufwerk
geöffnetes Verzeichnis kann mit Klick auf einen Button gespeichert und mit einem weiteren Button
wieder aufgerufen werden[/I]

Wie ist das aufgebaut? Gibt es ein Control für Laufwerke und ein weiteres für die
Anzeige der Verzeichnisse in einem ausgewählten Laufwerk? Sind das zwei Treeviews?
In Deinem geposteten Code scheint keine Trennung Laufwerk/Ordner vorzuliegen?
Oder handelt es sich bei "Anzeigebereich" um ein zusätzlich eingebautes Control für
weiterführende Angaben?

[I]Nach Klick auf einen Ordner im TreeView soll eine Sub-Prozedur zur Anzeige der enthaltenen
Dateien aufgerufen werden.[/I]
Zunächst müssen ggf. die enthaltenen Unterordner in weitere Treeview-Knoten eingefügt werden.
Warum verwendest Du ein "Label" für den indirekten Aufruf von "ShowFiles"?
Wieso mußt Du nach "Label1" erst suchen?
(Das Info-Label sollte innerhalb der "ShowFiles"-Methode belegt werden.)

Im VB@Archiv (Tipps und Tricks) sind Beispiele für Dateisystem-Explorer enthalten.
Schau dort mal nach.

Beitrag wurde zuletzt am 21.05.17 um 12:06:00 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff auf Prozedur von UserControl 
Autor: Dikn
Datum: 22.05.17 08:47

Vielen Dank für Deine rasche Antwort!

Meine Public Class FolderControl besteht aus:
Bereich Anzeige LW:
PictureBox für entspr. LW-Icon
Label für LW-Bezeichnung
Label für 'Öffnen'
Bereich Auswahl
Listbox

Bereich gefundene Verzeichnisse:
TreeView

2 x Button
Das 'FolderControl' funktioniert einwandfrei

Das in meiner Frage eingefügte 'FolderControl' diente nur zum Verständnis meiner Frage:

Wie kann ich beim Klick auf ein Verzeichnis im TreeView auf eine Sub-Prozedur im
Hauptformular 'frmMain' zugreifen (mit Übergabe FullPath)???
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff auf Prozedur von UserControl 
Autor: Manfred X
Datum: 22.05.17 09:21

Hallo!

Du hast ein UserControl, auf dem sich u.a. ein Treeview befindet
und willst wohin greifen? Auf das Parent-Formular des User-Control?

Das User-Control darf lediglich ein Ereignis auslösen.
Im Eventargs-Parameter kann der Pfad übergeben werden.
Es liegt dann am Parent-Formular, dieses gemeldete Ereignis in
einer Handler-Routine geeignet zu verarbeiten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff auf Prozedur von UserControl 
Autor: Dikn
Datum: 22.05.17 09:41

Wie beschrieben: Zugriff auf Hauptformular
so wie in meinem vereinfachten Beispiel, nur direkt ohne Umweg über Label
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff auf Prozedur von UserControl 
Autor: Manfred X
Datum: 22.05.17 09:46

Ein User-Control hat keinen Zugriff auf das Parent-Formular.
Das Control muß unabhängig von dem Formular sein, auf das es
jeweils gezogen wird.

Die Kommunikation kann deshalb ausschließlich über ein Event erfolgen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff auf Prozedur von UserControl 
Autor: Dikn
Datum: 22.05.17 13:29

Zugriff ist möglich. Siehe mein Beispiel. MsgBox zeigt den Pfad für das angeklickte Verzeichnis.

...über Event erfolgen???
wie mache ich das bei meinem Beispiel?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Beispiel: UserControl mit Event 
Autor: Manfred X
Datum: 22.05.17 15:08

Ein UserControl muß unabhängig vom Trägerformular sein.
Wenn du vom UC auf dieses Formular zugreifst, schaffst Du
eine Abhängigkeit.

Hier ein triviales Beispiel für ein UserControl mit Treeview:
Public Class ucTree
 
    'Klasse als Event-Parameter
    Public Class TreeNodeClickedEventArgs
        Inherits EventArgs
        Private _path As String = ""
 
        Public Sub New(path As String)
            _path = path
        End Sub
 
        Public ReadOnly Property Path As String
            Get
                Return _path
            End Get
        End Property
    End Class
 
    Dim WithEvents trv As New TreeView With {.Parent = Me}
 
    'Ereignis
    Public Event TreeNode_Clicked(sender As Object, _
       e As TreeNodeClickedEventArgs)
 
 
    Private Sub ucTree_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
        'testdaten
        Dim tn As TreeNode = trv.Nodes.Add("Node1")
        tn.Nodes.Add("Subnode1")
        tn = trv.Nodes.Add("Node2")
        tn.Nodes.Add("Subnode2")
    End Sub
 
 
    Private Sub trv_NodeMouseClick(sender As Object, _
        e As System.Windows.Forms.TreeNodeMouseClickEventArgs) _
        Handles trv.NodeMouseClick
 
        If e.Button = Windows.Forms.MouseButtons.Right Then
            'Ereignis auslösen, Pfad als Parameter
            RaiseEvent TreeNode_Clicked _
                (Me, New TreeNodeClickedEventArgs(e.Node.Text))
        End If
    End Sub
 
End Class
Beispielformular (Windows.Forms):
Public Class frmTree
 
    'das UserControl
    Dim WithEvents uct As New ucTree With {.Parent = Me}
 
    'Der Eventhandler
    Private Sub uct_TreeNode_Clicked(sender As Object, _
        e As ucTree.TreeNodeClickedEventArgs) Handles uct.TreeNode_Clicked
        MsgBox(e.Path)
    End Sub
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel: UserControl mit Event 
Autor: Dikn
Datum: 22.05.17 15:31

Vielen, vielen Dank!
Das muß ich mir erst in Ruhe zu Gemüte führen!!!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel