[vorerst erledigt]Listview - mehrere Spalten von Datei einlesen ?



  • wahrscheinlich isses wieder trivial aber brauch trotzdem euere Hilfe.. ich las schon msdn

    http://msdn.microsoft.com/de-de/library/2fds7919(VS.80).aspx und.
    http://msdn.microsoft.com/de-de/library/ms752071.aspx
    http://msdn.microsoft.com/de-de/library/s3dfa3sx.aspx
    und bin net unbedingt schlauer.. weils net klappt

    mein file is ein einfaches textfile
    Sten
    CliLooser
    NoCheckheim
    00-000
    Gagamel
    Kookser
    Schlumpfhausen
    01-0001

    so solls aussehen
    meine Listview..

    Name   |Nachname   |Ort        |Tel
    --------------------------------------
    Sten   |CliLooser  |NoCheckheim|00-000
    Gagamel|Kookser    |Schlumpfhau|01-001
    
    [cpp]
    inhalt=File::ReadAllLines("file.txt",System::Text::Encoding::UTF7);
    
    				for (int i=0; i<inhalt->Length; i++)
    				{
    				//this->listView1->Items->Add(inhalt[i]);
    
    				//listView1->Columns->Add(inhalt[i], 20, HorizontalAlignment(Left));
    
    				}[/cpp]
    

    //for each(String^ s in inhalt)
    //this->listView1->Items->Add(s);
    ich hab also ein vierspaltiges Listview nun möchte ich das jede zeile in die entsprechenden Spalten eingelesen werden d.h. 1-4te Zeile in 1-4 Spalte und wieder von vorn. wenn ich

    [cpp]this->listView1->Items->Add(inhalt[i]); [/cpp]
    

    wird nur die erste spalte vollgeschrieben jetzt fehlt mir eben noch die anderen spalten...
    die frage wat is falsch wenn ich das mit Columns mach kommt ein OutofRangefehler wobei ich glaub das iss sowieso die falsche methode.
    erleuchtet mich edit: bitte 💡 😃



  • ok was ich schonmal rausgefunden habe das die 2te,3te, 4te Spalte anscheinend SubItems sind... hmmm..



  • Alternativ könntest Du auch ein Datagridview nehmen und es mit Zeilen befüllen:
    dataGridView1->Rows->Add();

    Dann könntest Du es mit einer einfachen Indizierung befüllen:
    dataGridView1[0, 0]->Value = "foo";



  • witte schrieb:

    Alternativ könntest Du auch ein Datagridview nehmen und es mit Zeilen befüllen:
    dataGridView1->Rows->Add();

    Dann könntest Du es mit einer einfachen Indizierung befüllen:
    dataGridView1[0, 0]->Value = "foo";

    ich probiers mal danke..
    hm ok das ist etwas leichter allerdings find ich die eigenschaft nicht womit ich den inhalt des Textes sichtbar mach. merkwürdigerweise scheint da irgendwo ein visible=false zu stehen weil ich sehe die Daten nur wenn ich sie anklicke..
    is ja wirklich dämlich das das bei der defaultanzeige weiss ist die Schrift 😡 .. muss die Cellfarbe extra umstellen ..

    zu den ListView:
    edit: 29 April
    http://msdn.microsoft.com/de-de/library/system.windows.forms.listviewitem.aspx

    das scheint ein ansatz zu sein.. noch blick ich nicht ganz durch.. mal sehn



  • so einen Teilerfolg hab ich ich kann 1 SubItem eintragen. ich habe das file einfach gesplitet und in Strings reingeschrieben..

    [l]

    inhalt=File::ReadAllLines("file.txt",System::Text::Encoding::UTF7); 
    
                    for (int i=0; i<inhalt->Length; i++) 
                    { 
                        String^ name; String ^vorname....ect...
    .. //aufteilungsalgoritmus
    ..
    
    this->listView1->Items->Add(name)->SubItem->Add(vorname); 
    
                    }
    

    allerdings kann ich keine weiteren Subitems anfügen.. das muss doch auch gehen
    in der art

    this->listView1->Items->Add(name)->SubItems->Add(name)->SubItem->Add(vorname);
    

    // geht nicht!
    nur wie?



  • Hi

    Ich hatte mal was gebastelt und es so gelöst. Gibt bestimmt noch andere Möglichkeiten.

    item = gcnew ListViewItem(textBoxName->Text,0);
    item->SubItems->Add(maskedTextBoxDatum->Text);
    item->SubItems->Add(Convert::ToString(alter));
    
    array <ListViewItem^> ^temp = {item};
    listViewGeburtstage->Items->AddRange(temp);
    


  • b2101 schrieb:

    Hi

    Ich hatte mal was gebastelt und es so gelöst. Gibt bestimmt noch andere Möglichkeiten.

    item = gcnew ListViewItem(textBoxName->Text,0);
    item->SubItems->Add(maskedTextBoxDatum->Text);
    item->SubItems->Add(Convert::ToString(alter));
    
    array <ListViewItem^> ^temp = {item};
    listViewGeburtstage->Items->AddRange(temp);
    

    jep in der art hab ich das jetzt gelöst ... danke...hat mich weitergebracht..

    weiss net ob es zu spaghettihaft programmiert ist - aber zum späteren verarbeiten vielleicht auch gut.. mal sehen .. ich hab das file (per readline) eingelesen in ein

    [cli]array<String^>^inhalt[/cli]
    

    dann hab ich einfach

    [cli]array<String^> ^vorname=gcnew array<String^>(inhalt->Length);
    array<String^> ^name=gcnew array<String^>(inhalt->Length);
    array<String^> ^ort=gcnew array<String^>(inhalt->Length);
    array<String^> ^tel=gcnew array<String^>(inhalt->Length);[/cli]
    

    erstellt und durchgeparst (also getrennt mit diversen methoden Substring, IndexOf usw..
    dann ne billige for-schleife

    alles schön in die einzelnen arrays rein.. und dann..das.. was ich gesucht habe s. auch oben.

    [cli]
    for (int i=0; i<inhalt->Length; i++)
    {
    	ListViewItem ^item;
    	item=gcnew ListViewItem(vorname[i]);
    	item->SubItems->Add(name[i]);
    	item->SubItems->Add(ort[i]);
    	item->SubItems->Add(tel[i]);
    	listView1->Items->Add(item); //hippieee
    
    }[/cli]
    

    danke an euch allen ihr habt mich auf den richten Weg gebracht..


Anmelden zum Antworten