vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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
Re: ComboBox für vorhandene Laufwerke 
Autor: Dikn
Datum: 23.05.19 09:23

Hallo Manfred X!
Vielen Dank für Deine schnelle Antwort!

Mit „Ansicht“ meine ich:
Beim Hinzufügen/Entfernen eines Laufwerks soll im TreeView [trvFolders] die Markierung des ausgewählten Eintrags bestehen bleiben

Wie geht das?
Was kann vereinfacht verbesset werden?

Imports System.IO
 
Public Class Form1
  Dim strSelItem As String 
  Dim intTypArr(,) As String
 
  Const WM_DEVICECHANGE As Integer = &H219
  Const DBT_DEVICEARRIVAL As Integer = &H8000
  Const DBT_DEVICEREMOVECOMPLETE = &H8004
 
  Public Class TreeNode
    Inherits System.Windows.Forms.TreeNode
    Public Path As String
  End Class
 
  Public Declare Function LockWindowUpdate Lib "user32.dll" (ByVal hWndLock As _
    IntPtr) As Boolean  '???
 
 
Protected Overloads Overrides Sub WndProc(ByRef msg As Message)
  MyBase.WndProc(msg)
  If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = CType(DBT_DEVICEARRIVAL, _
    IntPtr) Then
    frmInfo.TextBox1.Text = vbNewLine & "neuen Datenträger erkannt"
    frmInfo.intTime = 1
    frmInfo.Show
    Call setDrives()
    cbDrives.SelectedItem = strSelItem 
    strSelItem = Me.cbDrives.SelectedItem
  End If
  If msg.Msg = WM_DEVICECHANGE AndAlso msg.WParam = CType( _
    DBT_DEVICEREMOVECOMPLETE, IntPtr) Then 
    frmInfo.TextBox1.Text = vbNewLine & "Datenträger wurde entfernt"
    frmInfo.intTime = 1
    frmInfo.Show 
    Call setDrives()
    If InStr(strSelItem, "E:") Then
      cbDrives.SelectedIndex = 0
      strSelItem = Me.cbDrives.SelectedItem
      Call setFolders(strSelItem.Substring(strSelItem.Length-3, 2) & "\")
      trvFolders.Focus
    Else
      cbDrives.SelectedItem = strSelItem
    End If
  End If
  End Sub
 
 
Private Sub Me_Load(sender As Object, e As System.EventArgs) Handles Me.Load
  Call setDrives()
  cbDrives.SelectedIndex = 0
  strSelItem = Me.cbDrives.SelectedItem
  Call setFolders(Directory.GetLogicalDrives.First)
End Sub
 
 
 
Private Sub cbDrives_DrawItem (ByVal sender As Object, ByVal e As _
  System.Windows.Forms.DrawItemEventArgs) Handles cbDrives.DrawItem
  If Me.cbDrives.DroppedDown = True AND (e.State And DrawItemState.Selected) = _
  DrawItemState.Selected Then
    e.Graphics.FillRectangle(SystemBrushes.Control, e.Bounds)
  Else
    e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds)
  End If
 
  If intTypArr Is Nothing Then Exit Sub
 
  e.Graphics.DrawImage(ImageList2.Images.Item(CInt(intTypArr(e.Index,1))), 4, _
    e.Bounds.Top + 1)
  e.Graphics.DrawString(cbDrives.Items(e.Index).ToString, cbDrives.Font, _
  Brushes.Black, 20, e.Bounds.Top + 1)
  End Sub
 
Private Sub cbDrives_DropDownClosed (sender As Object, e As System.EventArgs) _
  Handles cbDrives.DropDownClosed
  Me.trvFolders.Nodes.Clear
  strSelItem =  Me.cbDrives.SelectedItem
  Call setFolders(strSelItem.Substring(strSelItem.Length-3,2) & "\")
  trvFolders.Focus
End Sub
 
Private Sub setFolders(strLW As String)
  Dim tn As TreeNode = Nothing
  Dim nodeInfo As DirectoryInfo = New DirectoryInfo(strLw)
 
  Try
    trvFolders.Nodes.Clear
    For Each di As DirectoryInfo In nodeInfo.GetDirectories
      If di.Attributes = FileAttributes.Directory Then
        tn = AddNode(trvFolders.Nodes, di.Name, di.FullName)
        If My.Computer.FileSystem.GetDirectories(tn.Path).Count > 0 Then 
          AddNode(tn.Nodes, ".", ".")
        End If
      End If
    Next
 
  Catch ex As Exception
  End Try
  End Sub
 
Private Function AddNode (ByVal nodeCollection As TreeNodeCollection, ByVal _
  Caption As String, ByVal path As String) As TreeNode
  Dim tn As New TreeNode()
 
  tn.Text = Caption
  tn.Path = path
  nodeCollection.Add(tn)
  Return tn
End Function
 
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ComboBox für vorhandene Laufwerke1.117Dikn21.05.19 17:18
Re: ComboBox für vorhandene Laufwerke709Manfred X21.05.19 17:31
Re: ComboBox für vorhandene Laufwerke566Dikn23.05.19 09:23
Re: ComboBox für vorhandene Laufwerke563Dikn23.05.19 09:24
Re: ComboBox für vorhandene Laufwerke613Manfred X23.05.19 13:38
Re: ComboBox für vorhandene Laufwerke572Dikn25.05.19 09:59
Re: ComboBox für vorhandene Laufwerke604Manfred X25.05.19 12:45
Re: ComboBox für vorhandene Laufwerke557Dikn27.05.19 09:20
Re: ComboBox für vorhandene Laufwerke582Manfred X27.05.19 12:49
Re: ComboBox für vorhandene Laufwerke538Dikn27.05.19 17:43
Re: ComboBox für vorhandene Laufwerke580Manfred X27.05.19 18:21

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