Enum in ListView



  • Ich habe eine listView1, in die ich alle Dienste mit Namen und Status eintragen will. Probleme gibts noch beim Status, den ich nicht in die ListView bekomme.
    Lösung?

    ServiceController* scl[] = ServiceController::GetServices();
    int index = scl->GetLength(0);
    
    for(int i=0; i<scl->Length; i++) {
      ListViewItem* lvItem = new ListViewItem(scl[i]->ServiceName);
      lvItem->SubItems->Add(__box(scl[i]->Status)); // Problemstelle
      listView1->Items->Add(lvItem);
    }
    


  • Du musst halt entweder ein "ListViewItem::ListViewSubItem" hinzuefügen, oder einen String....
    ALso z.B.

    lvItem->SubItems->Add(scl[i]->Status.ToString());
    


  • Noch immer kein Erfolg, Status wird nicht angezeigt.
    Hier das Minimalbeispiel:
    [cpp]
    #pragma once

    namespace versuch
    {
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::ServiceProcess;

    public __gc class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();
    }

    protected:
    void Dispose(Boolean disposing)
    {
    if (disposing && components)
    {
    components->Dispose();
    }
    __super::Dispose(disposing);
    }
    private: System::Windows::Forms::ListView * listView1;

    private:
    void InitializeComponent(void)
    {
    this->listView1 = new System::Windows::Forms::ListView();
    this->SuspendLayout();
    //
    // listView1
    //
    this->listView1->Alignment = System::Windows::Forms::ListViewAlignment::Left;
    this->listView1->FullRowSelect = true;
    this->listView1->GridLines = true;
    this->listView1->Location = System::Drawing::Point(16, 16);
    this->listView1->Name = S"listView1";
    this->listView1->Size = System::Drawing::Size(304, 208);
    this->listView1->TabIndex = 0;
    this->listView1->View = System::Windows::Forms::View::List;
    //
    // Form1
    //
    this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
    this->ClientSize = System::Drawing::Size(640, 350);
    this->Controls->Add(this->listView1);
    this->Name = S"Form1";
    this->Text = S"Form1";
    this->Load += new System::EventHandler(this, Form1_Load);
    this->ResumeLayout(false);

    }
    private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)
    {
    this->listView1->Clear();
    ServiceController* scl[] = ServiceController::GetServices();
    int index = scl->GetLength(0);
    for(int i=0; i<scl->Length; i++)
    {
    ListViewItem* lvItem = new ListViewItem(scl[i]->ServiceName);
    lvItem->SubItems->Add(__box(scl[i]->Status)->ToString());
    listView1->Items->Add(lvItem);
    }
    }

    };
    }



  • Was geht denn an meinem Vorschlag nicht?
    Was sagt der Compiler?



  • Der Compiler beschwert sich nicht, aber in der ListView wird nichts angezeigt (ausser dem Dienstnamen)



  • Du solltest die ListeView vielleicht auch in den "Report"-Mode schalten!



  • Hm, hängt irgendwie mit listview->View = Details|Small... zusammen.
    Bei View "Details" kann ich die Titelspalten sehen, beim ausführen steht aber sonst nichts in der ListView oder ich setze View "SmallIcon" und sehe keine Titelspalten, jedoch meine Dienste (immer noch ohne Status)
    Ich glaub, da muss ich erst noch drüber schlafen...



  • Das ist so By-Design...
    Oder siehst Du im Explorer in der Icon-View das Datum der Datei?


Anmelden zum Antworten