C# Write Listview, and Read Listview (how to add indicator for listview for subitem)

399 views Asked by At

I got this project going on for myself to keep some thing in order.

What I have is this:

+---Date---+----Time----+----Error-----------+
|24-24-2012|    4:42    | Warning - test/test|
+----------+------------+--------------------+

Now I got all that working, at least the reading & writing. but its not going as I was hoping it would.

I wanted these text to be like:

Date (items.add)
time (subitem)
error (subitem)

I want it to be written like:

date | time | error

and then once the program read it, he knows:

| = Start of subitem ( || end of subitem )

so what it would look like in the text file to be written to is:

date | time ||| error || ( which means : time start+end / error start+end (add to subitem)

I want the program visual studio to know that he knows that ( | 1x = subitems.add(" - And | 2x = ");

ugh quite hard to explain. I'll try less complicated.

| = subitems.add("<br>
|| = ");

so writing a file would look like :

writer.writeline( | + "hello" + || + | + "test" + || );

which will result in the text file as :

| hello ||| test ||

Once program boots up, it will read it again this way:

Listview.additems.add( hello ) *with no | or ||*

and the test will be :

listview.subitem( test ) *with no | or ||*

And so on...


Screenshots to explain it a little bit better for someone with autism like me.

Click here for screenshot

2

There are 2 answers

0
Artak On BEST ANSWER

So adding the response as another answer. You're code will look something like this:

using(StreamReader reader = new StreamReader(logFileName))
{
  StringBuilder currentItem = new StringBuilder();
  char currentChar;
  while (true)
  {
    if (reader.Peek() == 'specialChar')
    {
      if (currentChar == '|')
      {
        // This indicates that the currentItem is subItem
        AddNewSubitem(currentItem.ToString());
      }
      else
      {
        AddNewItem(currentItem.ToString());
      }
      currentItem.Clear();
      reader.Read();
    }
    else if (reader.Peek() != null)
    {
      curentItem.Append(reader.Read());
    }
    else
    {
      break;
    }
  }
}
6
Artak On

I'm not sure I've fully understood what you need to achieve, but what I understood I think is that you want each item in the listbox to follow a specific template - so the main one will be in some X template, and the subitems will have a different template - a bit intended. So when addig - to the listbox depending on the item type you're adding set the

listboxitem.template = isSubitem?subItemTemplate:mainItemTemplate;

And that's all what I understood from your question. Hope it makes sense.