file text to listbox line by line



  • würde gerne Zeile für Zeile mit einer Zeitverzögerung ausgeben, aber wie?

     private void button1_Click(object sender, EventArgs e)
            {
    
                int counter = 1;
                string line;
    
                System.IO.StreamReader file = new System.IO.StreamReader(@"C:\data.txt");
    
                List<int> list = new List<int>();
    
                while((line = file.ReadLine()) != null)
                {
                    timer1.Start();
                  listBox1.Items.Add(line);
                   
                    counter++;
                }
    
    


  • Dann verwende (statt dem Timer - den du falsch benutzt)

    await Task.Delay(100);
    

    (die Methode mußt du dann noch als async deklarieren)



  • kennt ihr einen Befehl dammit ich Zeile für Zeile in einer for schgleife ausgebe?

    while((line = file.ReadLine()) != null)
    {
    for(int i =0; i>10;i++){
    listBox1.Items.Add(line[i]);
    }

            }


  • Was meinst du mit ausgeben? Console.WriteLine?



  • in Windows Form Aplication, console geht nicht. würde das gerne in eine listbox oder textbox ausgeben...

    wenn ich thread.sleep eingebe kommen die Abstende nicht!?

    while((line = file.ReadLine()) != null)
    {
    for(int i =0; i>10;i++){
    listBox1.Items.Add(line[i]);
    Thread.Sleep(200);
    }
    
            }
    


  • @Boomaut sagte in file text to listbox line by line:

    kommen die Abstende

    Abstände? Macht aber auch irgendwie keinen Sinn. Gib dir bitte etwas mehr Mühe, deine Fragen zu formulieren.
    line ist ein String, den kannst du auch gleich zur ListBox hinzufügen: listBox1.Items.Add(line);



  • würde bei der Ausgebe Zeile für Zeile Zeit verstreichen lassen!
    Also zwischen den Zeilen Pause machen...

    Bei den obigen cod= Ausgabe:
    Er gibt den Text aus, Zeitverzöger und alles auf einmal...



  • Hast du meine Antwort gelesen? Oder etwa nicht verstanden?



  • Du bist auf dem UI-Thread, du kannst den nicht einfach mit Thread.Sleep() blockieren. Dein Fenster wird wahrscheinlich erst neu gezeichnet wenn dein Event Handler fertig ist, der braucht aber ewig.

    Du musst mit "await Task.Delay" arbeiten wie es oben bereits von Th69 dargestellt wird. Bitte lesen!

    MfG SideWinder



  • Hi,

    habs endlich!

      private async void button5_Click(object sender, EventArgs e)
            {
                foreach (var line in File.ReadLines(@"C:\data.txt"))
                {
                    listBox1.Items.Add(line);
                    await Task.Delay(1000);
                }
            }
    

Log in to reply