Listview

Status
Niet open voor verdere reacties.

WILLIAMXXX

Terugkerende gebruiker
Lid geworden
29 nov 2006
Berichten
1.246
Hey,

Kan iemand mij vertellen hoe je bestanden in een listview laat weergeven:

In de map C:\voorbeeld\ staan een aantal text bestanden
In de listview moeten dan alle bestanden woorden weergegeven in in pictogram
Als je er dan op klikt of 2X dan laat hij de inhoud zien in richtextbox1

Kan iemand mij helpen?

Alvats Bedankt....:thumb:
 
ik weet niet of het met een listview gaat, die pictogrammen, maar goed
Met welke VB werk je? in 6.0 kan je iets met dit doen:
Code:
dir("C:\voorbeeld\*.txt")

2x klikken: gewoon opzoeken welke van de geklikte het is (niet lastig - listview1.text gebruiken) en dan gewoon het openen via input-reading
 
ik weet niet of het met een listview gaat, die pictogrammen, maar goed
Met welke VB werk je? in 6.0 kan je iets met dit doen:
Code:
dir("C:\voorbeeld\*.txt")

2x klikken: gewoon opzoeken welke van de geklikte het is (niet lastig - listview1.text gebruiken) en dan gewoon het openen via input-reading

Kun je het nog eens uitleggen ik snap het niet helemaal... Ik doe het via een listview
 
richtextbox1.path = app.path ?

zo doe ik het meestal
 
app = EXE
.path = waar EXE staat


maar dit is ook VB6
 
Voor VB 2005 (dus .net) kun je de volgende - zeer uitgebreide - code gebruiken.

Inleiding
Met deze code krijg je links een ListView control met 3 kolommen: bestandsnaam, bestandsgrootte en datum laatst gewijzigd. Vervolgens worden alle "*.log" bestanden getoond die in "c:\windows" staan. Als je klikt op een bestandsnaam dan wordt de inhoud rechts getoond in een RichTextBox control.

Met een SplitterContainer control kun je de grootte van de beide andere controls aanpassen (ten koste van elkaar natuurlijk) ;)

Instructies
Start een nieuwe Windows Applicatie. Voeg aan de form de volgende drie componenten toe:
- een SplitterContainer
- een ListView
- een RichTextBox

Plaats een bitmap genaamd "document.bmp" in de folder "C:\", of pas de code aan natuurlijk... ;)

Voeg vervolgens in de volgende code toe in de code van het formulier:
Code:
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    InitSplitterContainer()
    AddListViewItems()
  End Sub

  Sub InitSplitterContainer()

    ' Basic SplitContainer properties.
    ' This is a vertical splitter that moves in 10-pixel increments.
    ' This splitter needs no explicit Orientation property because Vertical is the default.
    SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
    SplitContainer1.Location = New System.Drawing.Point(0, 0)
    SplitContainer1.Name = "splitContainer1"

    ' You can drag the splitter no nearer than 30 pixels from the left edge of the container.
    SplitContainer1.Panel1MinSize = 30
    ' You can drag the splitter no nearer than 20 pixels from the right edge of the container.
    SplitContainer1.Panel2MinSize = 20

    SplitContainer1.Location = New Point(0, 0)
    SplitContainer1.Size = New System.Drawing.Size(Me.ClientSize.Width, Me.ClientSize.Height)
    SplitContainer1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right Or AnchorStyles.Left Or AnchorStyles.Top

    SplitContainer1.SplitterDistance = 200
    ' This splitter moves in 10-pixel increments.
    SplitContainer1.SplitterIncrement = 10
    SplitContainer1.SplitterWidth = 6
    ' splitContainer1 is the first control in the tab order.
    SplitContainer1.TabIndex = 0
    SplitContainer1.Text = "splitContainer1"

    ' Add a ListView control to Panel1.
    SplitContainer1.Panel1.Controls.Add(ListView1)
    SplitContainer1.Panel1.Name = "splitterPanel1"

    ' Add a RichTextBox control to Panel1.
    SplitContainer1.Panel2.Controls.Add(RichTextBox1)
    SplitContainer1.Panel2.Name = "splitterPanel2"

    ListView1.Location = New Point(0, 0)
    RichTextBox1.Location = New Point(0, 0)
    ResizeControls()
  End Sub

  Private Sub SplitContainer1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles SplitContainer1.Resize
    ResizeControls()
  End Sub

  Private Sub ResizeControls()
    ListView1.Size = SplitContainer1.Panel1.ClientSize
    RichTextBox1.Size = SplitContainer1.Panel2.ClientSize
  End Sub

  Private Sub SplitContainer1_SplitterMoved(ByVal sender As Object, ByVal e As System.Windows.Forms.SplitterEventArgs) Handles SplitContainer1.SplitterMoved
    ResizeControls()
  End Sub

  Private Sub AddListViewItems()
    ' Create an ImageList object.
    Dim imageListSmall As New ImageList()
    imageListSmall.Images.Add("document", Bitmap.FromFile("C:\document.bmp"))

    'Assign the ImageList objects to the ListView.
    ListView1.SmallImageList = imageListSmall


    ListView1.Clear()

    ' Set the view to show details.
    ListView1.View = View.Details
    ' Allow the user to edit item text.
    ListView1.LabelEdit = False
    ' Allow the user to rearrange columns.
    ListView1.AllowColumnReorder = True
    ' Select the item and subitems when selection is made.
    ListView1.FullRowSelect = True
    ' Display grid lines.
    ListView1.GridLines = True
    ' Sort the items in the list in ascending order.
    ListView1.Sorting = SortOrder.Ascending

    ' Create columns for the items and subitems.
    ListView1.Columns.Add("Bestandsnaam", 150, HorizontalAlignment.Left)
    ListView1.Columns.Add("Laatst gewijizgd op", 100, HorizontalAlignment.Left)
    ListView1.Columns.Add("Bestandsgrootte", 100, HorizontalAlignment.Left)

    Try
      For Each foundFile As String In System.IO.Directory.GetFiles("c:\windows", "*.log", IO.SearchOption.TopDirectoryOnly)
        Dim fi As System.IO.FileInfo = New System.IO.FileInfo(foundFile)
        Dim Item As New ListViewItem(fi.Name, "document")
        Item.SubItems.Add(fi.LastWriteTime)
        Item.SubItems.Add(fi.Length)
        listView1.Items.add(item)
      Next

    Catch ex As Exception
      MessageBox.Show(ex.Message)
    End Try

  End Sub

  Private Sub ListView1_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged
    If ListView1.SelectedItems.Count > 0 Then
      Try
        Dim fname As String = "c:\windows\" & ListView1.SelectedItems(0).Text
        RichTextBox1.LoadFile(fname, RichTextBoxStreamType.PlainText)
      Catch ex As Exception
        RichTextBox1.Clear()
        MessageBox.Show(ex.Message)
      End Try

    End If
  End Sub

Succes!
 
Hoi,

Ik ben wat laat, maar ik denk... Moet toch maar even wat laten horen.
Het vervelende is dat er maar erg weinig no-nonsens tutorials op internet te vinden zijn. Ze zullen er vast zijn, maar ik heb er tenminste geen enkele gevonden.

Deze afgelopen 2 dagen ben ik alleen maar aan het vloeken en schelden geweest, want geen enkele forum kon mij een fatsoenlijk antwoord geven, behalve verwijzen naar tutorials die vaak onsamenhangend zijn of de auteur niet normaal kan uitleggen. De gekochte oeken richtten zich alleen maar op die #%(!@#& DataGrid. Zo kan ik nog wel even door gaan, maar daar schiet niemand iets mee op. Hierbij een goed werkende, geen gel-ul code, door mij gemaakt en voor iedereen goed bruikbaar:

Code:
Imports System.Data
Imports System.Data.OleDb

Private Sub frmStart_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     Dim dbPath As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Application.StartupPath & "\data.mdb;"
     '    Ik maak altijd gebruik van het applicatiepad voor de database i.v.m. de installatie
     '     "data.mdb" is in mijn geval de naam van de AccessDatabase

        Dim conn As New OleDb.OleDbConnection(dbPath)
        conn.Open()

        Dim ole_cmd As New OleDb.OleDbCommand("SELECT * FROM Contacten", conn)     '    Contacten is de naam van de tabel in de database
        Dim data_reader As OleDb.OleDbDataReader = ole_cmd.ExecuteReader()

        Do While data_reader.Read()
            Dim new_item As New  _
                ListViewItem(data_reader.Item("Voornaam").ToString)    '    "voornaam" is de naam van het veld in de database. Dat geldt ook voor de rest
            new_item.SubItems.Add(data_reader.Item("Achternaam").ToString)
            new_item.SubItems.Add(data_reader.Item("Geboortedatum").ToString)
            Listview1t.Items.Add(new_item)
        Loop

        conn.Close()

        '    maak de kolommen zo wijd als de inhoud
        Dim wid As Integer
        For i As Integer = 0 To Listview1.Columns.Count - 1
            Listview1.Columns(i).Width = -2
            wid += Listview1.Columns(i).Width
        Next i
    End Sub

Daarnaast is het ook erg belangrijk te weten de de Jet 4.0 niet in een 64-bits omgeving werkt. Microsoft heeft die nog steeds niet uitgebracht, ondanks de nieuwe office versie.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan