Har jättelika problem med att kunna skriva info från en ListView till ett textdokument. Bör man inte stänga StreamWritern? (sw.Close() eller likande) Har testat med absolut sökväg och även stängt StreamWritern, men det hjälps inte. Ska ge mig ikast med ett SaveFileDialog istället och se om det hjälper. Stänga StreamWritern behöver man inte när man använder using. Using ser till att Dispose-metoden anropas efter att using-blocket körts. Och Dispose stänger strömmen i sin tur. Så har i alla fall jag tolkat det... är du säker på att du kollar på rätt ställe efter din data.txt fil? (kolla i bin\Debug alternativt bin\Release beroende på vilken version du kör..) Det är där jag kollar. Jag har även gett absolut sökväg till Debug-mappen. using har ju inga klamrar { }. Jag har testat att kopiera din kod rakt av, fungerar perfekt! Är du helt säker på att du letar på rätt ställe? Testa att ta bort filen så att du verkligen ser att den skapas på nytt där. När jag skrev in den absoluta sökvägen så missade jag \ mellan Debug och data.txt så filen heter nu Debugdata.txt och där i finns texten som genereras av programmet. Nu kan jag sova lugnt inatt. Den enda frågan som cirkulerar i min skalle just nu är varför jag måste ange en absolut sökväg när alla andra inte behöver det. Jaja, huvudsaken är att det har löst sig iaf. Om du inte anger sökväg antar jag att filen hamnar i "aktuell" mapp. Gör du inget är det mappen som programmet ligger i, om du däremot gör annan filaccess kan det ändras. Du har inget annat i programmet som läser/skriver filer? Jag har en OpenFileDialog som läser in bilder. Kanske är där det spökar? Mycket möjligt, har du kollat i mappen där du hämtar bilderna om filen finns där? Här har du en anledning till att man ska specificera hela sökvägen! :) <b>using har ju inga klamrar { }. Skriva info från en ListView till ett textdokument
Metoden jag använder för att skriva till textdokumentet ser ut på följande vis:public void SaveObjects()
{
try
{
using(StreamWriter sw = new StreamWriter("data.txt"))
for (int listIndex = 0; listIndex < fastPopulateLV.Items.Count; listIndex++)
{
sw.WriteLine(fastPopulateLV.Items[listIndex].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[1].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[2].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[3].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[4].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[5].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[6].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[7].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[8].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[9].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[10].Text);
sw.WriteLine(fastPopulateLV.Items[listIndex].SubItems[11].Text);
}
MessageBox.Show("Objektlistan har sparats!");
}
catch (IOException ex)
{
MessageBox.Show("Ett fel uppstod:\n" + ex);
}
catch (Exception ex)
{
MessageBox.Show("Ett fel uppstod:\n" + ex);
}
}
Jag får upp en MessageBox som säger att Objektlistan är sparad, men när jag kikar i filen data.txt så är den tom. Observera att filen data.txt inte skapades av programmet utan den skapade jag innan jag körde programmet.
För att använda metoden har jag följande händelsehanterare:private void sparaToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveObjects();
}
Sv: Skriva info från en ListView till ett textdokument
Är du säker på att du skriver till den filen som du har skapat? Prövat att ange en absolut sökväg istället så att du vet säkert att det är rätt fil?
/JohanSv:Skriva info från en ListView till ett textdokument
Sv:Skriva info från en ListView till ett textdokument
Sv: Skriva info från en ListView till ett textdokument
Sv:Skriva info från en ListView till ett textdokument
Sv: Skriva info från en ListView till ett textdokument
using(StreamWriter sw = new StreamWriter("data.txt"))
{
for (int listIndex = 0; listIndex < fastPopulateLV.Items.Count; listIndex++)
{
...
}
}
Sv: Skriva info från en ListView till ett textdokument
/JohanSv:Skriva info från en ListView till ett textdokument
Tack för all hjälp!Sv: Skriva info från en ListView till ett textdokument
/JohanSv:Skriva info från en ListView till ett textdokument
Sv: Skriva info från en ListView till ett textdokument
/JohanSv: Skriva info från en ListView till ett textdokument
/JohanSv:Skriva info från en ListView till ett textdokument
using(StreamWriter sw = new StreamWriter("data.txt"))
{...}
{
for (int listIndex = 0; listIndex < fastPopulateLV.Items.Count; listIndex++)
{...}
{
...
}
}
</b>
Det behövs inga hakparenteser i detta läge. Precis som if-satser, for-satser och andra satser som kan verka över ett block så gäller den för nästa sats om inga klamrar används. I detta fall alltså för hela for-satsen.