Lady Sour
Lady Sour

Reputation: 279

How to get the file info which is selected in a listBox?

I have a Windows application that takes the data in the textboxes and writes them into a randomly generated text file, kinda keeping logs. Then there is this listbox that lists all these separate log files. The thing I want to do is to have another listbox display the file info of the selected one, the 2nd, 7th, 12th, ..., (2+5n)th lines of the text files that is selected after the button 'list info' is clicked. How is it possible to do this?

My code to update the first listbox is:

private void button2_Click(object sender, EventArgs e)
    {
        listBox1.Items.Clear();

        DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\Ece\Documents\Testings");
        // What type of file do we want?...

        FileInfo[] Files = dinfo.GetFiles("*.txt");
        // Iterate through each file, displaying only the name inside the listbox...

        foreach (FileInfo file in Files) 
        {
            listBox1.Items.Add(file.Name + "         " +file.CreationTime); 
        }

    }

Upvotes: 0

Views: 2756

Answers (1)

Lloyd Powell
Lloyd Powell

Reputation: 18780

On the SelectedIndexChanged event you want to get the selected item. I wouldn't suggest showing the second part in another list box, but i'm sure you can work out how from the example below if you require it. I would personally have a richTextBox, and just read the file to there:

//Get the FileInfo from the ListBox Selected Item
FileInfo SelectedFileInfo = (FileInfo) listBox.SelectedItem;  

//Open a stream to read the file  
StreamReader FileRead = new StreamReader(SelectedFileInfo.FullName);

//Read the file to a string
string FileBuffer = FileRead.ReadToEnd();

//set the rich text boxes text to be the file
richTextBox.Text = FileBuffer;

//Close the stream so the file becomes free!
FileRead.Close();

Or if you are persistant to sticking with the ListBox then:

//Get the FileInfo from the ListBox Selected Item
FileInfo SelectedFileInfo = (FileInfo) listBox.SelectedItem;   

//Open a stream to read the file 
StreamReader FileRead = new StreamReader(SelectedFileInfo.FullName);

string CurrentLine = "";
int LineCount = 0;

//While it is not the end of the file
while(FileRead.Peek() != -1)
  {
  //Read a line
  CurrentLine = FileRead.ReadLine();

  //Keep track of the line count
  LineCount++;

  //if the line count fits your condition of 5n + 2
  if(LineCount % 5 == 2)
    {
    //add it to the second list box
    listBox2.Items.Add(CurrentLine);
    }
  }

//Close the stream so the file becomes free!
FileRead.Close();

Upvotes: 3

Related Questions