CheckedListBox



  • Hallo Forum,

    gibt es eine Möglichkeit einen Eintrag in einer CheckListBox anders einzufärben, um ihn hervorzuheben?

    Gruß
    physici



  • AFAIK: Nein. Du kannst auch kein OwnerDraw machen, sondern müsstest das OwnerDraw mit der normalen CheckBox machen...
    Oder schau mal auf codeproject, ob sowas schon jemand gemacht hat...



  • Wozu gibt es "schlaue Bücher" 😕 ? Zum Nachlesen 🤡 !! Darin habe ich eine Möglichkeit gefunden, wie man es unter C# mit einer ListBox macht. Dann noch ein bissel basteln und schon klappts auch unter C++ 😃

    Ich pack hier mal meinen C++ Code rein, mit dem ich das ausprobiert habe:

    public: void DrawMyBox(Object* Sender, DrawItemEventArgs* e)
    	{
    		e->DrawBackground();
    		if((e->State && DrawItemState::Selected)==DrawItemState::Selected)
    		{
    			e->Graphics->FillRectangle(Brushes::Orange,e->Bounds);
    			e->Graphics->DrawString(String::Concat("Item ",e->Index.ToString()," ausgewählt"), new Drawing::Font("Arial",10),Brushes::Blue, Drawing::PointF(e->Bounds.X,e->Bounds.Y));
    		}
    		else
    		{
    			e->Graphics->DrawString(String::Concat("Item ",e->Index.ToString()), new Drawing::Font("Arial",10),Brushes::Black, Drawing::PointF(e->Bounds.X,e->Bounds.Y));
    		}
    	}
    	public: void zeichnen(void)
    			{
    				this->listBox1 = new System::Windows::Forms::ListBox();
    				this->SuspendLayout();
    				// 
    				// listBox1
    				// 
    				this->listBox1->Location = System::Drawing::Point(88, 72);
    				this->listBox1->Name = S"listBox1";
    				this->listBox1->Size = System::Drawing::Size(120, 95);
    				this->listBox1->TabIndex = 0;				 
    				this->listBox1->Items->Add(Convert::ToString("Item 1"));
    				this->listBox1->Items->Add(Convert::ToString("Item 2"));
    				this->listBox1->DrawMode = DrawMode::OwnerDrawFixed;
    				this->listBox1->DrawItem += new DrawItemEventHandler(this,DrawMyBox);
    				this->Controls->Add(this->listBox1);
    			}
    

    Außerdem rufe ich nach dem InitializeComponent() die Funktion zeichnen() auf und schon klappt es, wie ich das will. Jetzt muss ich nur mal sehen, ob ich das auch in meinem Programm und mit einer CheckedListBox hinbekomme, da die ja wohl die gleichen Eigenschaften wie die ListBox hat.

    Hab trotzdem besten Dank
    physici



  • Hmpf 😞 😡

    Hinweis Die CheckedListBox-Klasse unterstützt nur DrawMode.Normal. Zeichenmodi mit Besitzerzeichnung werden ignoriert.

    Damit gehts dann wohl mit der CheckListBox doch nicht. Muss ich mir wohl ein Steuerelement selbst zusammenbasteln *würg*



  • PS: In VC2002/2003 solltest Du Dir angewöhnen (managed) Strings immer mit "S" als Prefix zu schreiben! SOnst erzeugt der Compiler immer einen unschönen "Convert-Code"...


Anmelden zum Antworten