Hallo Martin,
erst einmal vielen Dank das Du Dich der Sache angenommen hast
Zum TreeView-Problem: Ich fürchte, Du musst das Zeichnen des
TV selbst übernehmen.
Nach meinem Verständnis sind die VisualStyleElements die Teile
zum Zeichnen eines Steuerelements, die normalerweise verwendet
werden. Windows hat einen bestimmten Style eingestellt und
zeichnet die Controls mit genau den Einstellungen dieses
Styles. Alle Controls.
Wenn ausschließlich ein einziger Treeview anders aussehen soll
als der Rest, musst Du ihn selbst malen.
Genau diese Befürchtung habe ich gehabt
Ich habe nochmals und lange gegoogelt. Dabei bin ich auf folgendes gestossen.
https://msdn.microsoft.com/de-de/library/system.wind…
Sehe ich das nun richtig. Es soll ein Explorer Control werden. Ich habe nun ein UserControl erstellt. Dort rufe ich doch folgende Routine auf
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
End Sub
Laut dem Artikel, den ich oben gepostet habe, müsste ich ja wiefolgt das abändern
Public Sub DrawVisualStyleElementTreeViewGlyph1(ByVal e As PaintEventArgs)
If (VisualStyleRenderer.IsElementDefined( \_
VisualStyleElement.TreeView.Glyph.Closed)) Then
Dim renderer As New VisualStyleRenderer \_
(VisualStyleElement.TreeView.Glyph.Closed)
Dim rectangle1 As New Rectangle(10, 50, 50, 50)
renderer.DrawBackground(e.Graphics, rectangle1)
e.Graphics.DrawString("VisualStyleElement.TreeView.Glyph.Closed", \_
Me.Font, Brushes.Black, New Point(10, 10))
Else
e.Graphics.DrawString("This element is not defined in the current visual style.", \_
Me.Font, Brushes.Black, New Point(10, 10))
End If
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
DrawVisualStyleElementTreeViewGlyph1(e)
MyBase.OnPaint(e)
End Sub
Nun sollte doch der Plus Button neu gezeichnet werden. Die Routine DrawVisualStyleElementTreeViewGlyph1 müsste ich noch auf das Opened reagieren lassen. Dann sollten doch die beiden Sachen neu gezeichnet werden.
Wenn ich das soweit richtig sehe, wie müsste dann das zeichnen genau aussehen. Denn so wie ich es verstehe …
Dim rectangle1 As New Rectangle(10, 50, 50, 50)
renderer.DrawBackground(e.Graphics, rectangle1)
e.Graphics.DrawString("VisualStyleElement.TreeView.Glyph.Closed", \_
Me.Font, Brushes.Black, New Point(10, 10))
wir ja hier der Eintrag gezeichnet oder?
Das Auffinden der Freigaben eines Rechners:
Falls Du partout nichts anderes findest, könntest Du noch per
„net view \Computername“ auf der Kommandozeile die Freigaben
auflisten lassen und das Ergebnis parsen.
Oder Du googelst mal, wie „net view“ das macht und
implementierst es selbst mit .NET. Ich würde mich in diesem
Fall aber auf einiges an Interop einstellen…
Was dieses angeht, das Problem stelle ich erst einmal etwas nach hinten
Welche Rechner in welchen Netzwerkgruppen angemeldet sind, das habe ich bereits. Genauso, wie die Freigegebenen Ordner. Nun habe ich nur noch das Problem Die Ordner direkt auszulesen und ggfls. das Password für das Netzwerk zu übergeben.
Also an die Info zum Bsp. Rechner = LS - H … ( NAS Platte) und die Freigegebenen Ordner Public und Share komme ich, aber nicht an den Inhalt was in Share ist. Den Code kann ich Dir gerne mal posten, wenn es hilft.
Liebe Grüße Alex
Gruß,
Martin