print listbox selected item

Status
Niet open voor verdere reacties.

stenhoeve21

Gebruiker
Lid geworden
7 feb 2013
Berichten
26
Ik heb de volgende vraag waar ik nog geen informatie over heb kunnen vinden. Ik heb een listbox en ik wil enkel en alleen de geselecteerde item printen in een.txt. Als opmerking over onderstaande code. Als het programma start dan moet er eerst een check plaats vinden of er al een .txt aanwezig is, zo ja dan moet het bestand worden overschreven als er wijzigingen komen. Als het programma eenmaal gestart is dan moeten de wijzigingen worden aangevuld in het.txt bestand (dus niet iedere keer het hele bestand opnieuw aanmaken) Met de code die ik n u heb kan het .txt bestand niet worden aangemaakt. Ik zie het ff niet.
Code:
Public Class Form1
Dim filecheck As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If File.Exists("test.txt") Then
            filecheck = True
        End If
Private Sub btnAddOrder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddOrder.Click
    
        Dim Counter As Integer
        Dim fileNumber As Integer = FreeFile()
       Try
            If filecheck = True Then
                FileOpen(fileNumber, "test.txt", OpenMode.Output)
            Else
                FileOpen(fileNumber, "test.txt", OpenMode.Append)
            End If
            For Counter = 0 To lstArticles.SelectedItem.Count() - 1
                
                If lstArticles.SelectedItem(Counter) = True Then
                    PrintLine(fileNumber, lstArticles.Items(Counter))
 End If
            Next
        Catch ex As Exception
            MsgBox("Can't create file tests.txt", MsgBoxStyle.Critical, "Error")
        Finally
            FileClose(fileNumber)
        End Try
    End Sub
 
Laatst bewerkt:
Als het bestand bestaat moet het overschreven (dus verwijderd) ?

[cpp]If IO.File.Exists("...") Then IO.File.Delete("...")[/cpp]

Om een geselecteerd item weg te schrijven:

[cpp]Dim writer As New IO.StreamWriter("...", True) ''//Append op true!
writer.WriteLine(ListBox1.SelectedItem)
writer.Close()[/cpp]

Clear?
geschreven zonder IDE, dus fouten voorbehouden ;)
 
Dank voor je reactie. Even voor mijn begrip, ik heb altijd het idee indien er gebruikt wordt gemaakt van StreamWriter je deze niet moet combineren met FileOpen. Ik maak hier gebruik van FileOpen en PrintLine. Is dit een ongeschreven regel of wordt beide wel gebruikt binnen een project? De check of het .txt bestand al bestaat had ik als volgt in gedachten. Als je het programma start wordt er gekeken of het .txt bestand bestaat, de boolean wordt dan true. Middels een button worden orders weg geschreven. Het .txt bestand moet alleen worden overschreven indien er een nieuwe order wordt geplaatst (na de startup van het programma), vinden er geen wijzigingen plaats (komt er dus op neer dat de button niet wordt gebruikt) dan moet het (oude) .txt bestand (welke aangemaakt is in een vorige sessie) blijven bestaan. Indien er wel een nieuwe orden wordt geplaatst dan moet het.txt bestand worden overschreven. Indien er daarna in dezelfde sessie nog meer orders worden geplaatst dan moeten deze dus middels append worden toegevoegd en moet niet het.txt bestand iedere keer opnieuw worden aangemaakt.

Ik dacht zo dat als de boolean true is, dan maak ik gebruik van OpenMode.Output anders moet ik gebruik maken van OpenMode.Append. Dat had ik getracht met mijn code uit te voeren.
 
Laatst bewerkt door een moderator:
Je hoeft toch geen FileOpen-functie te gebruiken als je een StreamWriter-object implementeert ... :S

Maar als het nieuwe bestand moet blijven bestaan als je geen nieuwe orders geeft, dan wordt het zoiets:

[cpp]Private overschr As Boolean = False

''//Nieuwe order
If overschr = False Then
IO.File.Delete("...")
overschr = True
End If

Dim writer As New IO.StreamWriter("...", True)
writer.WriteLine(ListBox1.SelectedItem)
writer.Close()[/cpp]
 
OK, deze code werkt en inderdaad de Filepen functie is dan overbodig.... :)
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan