CheckedListBox
-
Hallo,
ich hab mir vor kurzem VS2005 zugelegt und bin eigentlich PHP-Programmierer.
In C++ hab ich noch nicht allzu große Erfahurungen sammeln können.Ich habe folgendes Problem:
Ich möchte die Klasse CheckedListBox um eine neue Methode Add erweitern.
Diese stehen hier ja in CheckedListBox::Items::Add.
Ich schaffe es eine neue Methode zu CheckedListBox hinzuzufügen, aber in die "property"?!? Items nicht.namespace TestComponents { public ref class ExtendedObjectCollection : System::Windows::Forms::CheckedListBox::ObjectCollection { public: void Add(System::Object ^item, bool isChecked, String^ key) { ; } }; public ref class ExtendedCheckedListBox : public System::Windows::Forms::CheckedListBox { public: ExtendedCheckedListBox(void) { InitializeComponent(); this->Items = gcnew ExtendedObjectCollection(this); } ExtendedCheckedListBox(System::ComponentModel::IContainer ^container) { container->Add(this); InitializeComponent(); this->Items = gcnew ExtendedObjectCollection(this); } #pragma region Windows Form Designer generated code void InitializeComponent(void) { components = gcnew System::ComponentModel::Container(); } #pragma endregion }; }
Wo liegt der Fehler? Das ganze soll in C++ implemeniert werden.
Gruß,
Frank
-
Was willst Du denn genau machen??? Eine eigene Collection unterzuschieben ist manchmal sehr verwirrend...
PS: Das ganze ist nicht C++ sondern C++/CLI
-
Hoi,
es geht in diesem Fall jetzt nicht um ein konkretes Problem, sondern wie funktioniert C++/CLI hier prinzipiell.
Mein Code ist ja so leider nicht zu gebrauchen, aber Ziel ist es in CheckedListBox::Items eine 3. Add-Methode zu implemitieren.
Geht das hier/generell und Falls ja wie ist der Syntax zu verwenden.
Gruß,
Frank
-
Dass Du auch gerade mit dem schwierigsten Anfangen musst... aber gut, hier ein Beispiel:
#pragma once using namespace System; using namespace System::ComponentModel; using namespace System::Windows::Forms; namespace MCPP_WindowsForms1 { public ref class MyCheckedListBox : public CheckedListBox { public: MyCheckedListBox() { } ref class MyCheckedObjectCollection : public CheckedListBox::ObjectCollection { public: MyCheckedObjectCollection(CheckedListBox^ owner): CheckedListBox::ObjectCollection(owner) { } int Add() { return 0; } }; [Editor("System::Windows::Forms::Design::ListControlStringCollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", System::Drawing::Design::UITypeEditor::typeid)] [DesignerSerializationVisibility(DesignerSerializationVisibility::Content)] [Localizable(true)] property MyCheckedObjectCollection^ Items { MyCheckedObjectCollection^ get() { return static_cast<MyCheckedObjectCollection^> (CheckedListBox::Items); } } protected: ~MyCheckedListBox() { } virtual ListBox::ObjectCollection^ CreateItemCollection() override { return gcnew MyCheckedObjectCollection(this); } }; }
-
Danke,
das hat erst mal geholfen.
Aber wie kommt man auf diese Zeilen:
[Editor("System::Windows::Forms::Design::ListControlStringCollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", System::Drawing::Design::UITypeEditor::typeid)] [DesignerSerializationVisibility(DesignerSerializationVisibility::Content)] [Localizable(true)]
Steht in der MSDN wie der PublicKeyToken heisst, oder wo finde ich das?
Gruß,
Frank
-
Ueberflasher schrieb:
Aber wie kommt man auf diese Zeilen:
Reflector
http://www.aisto.com/roeder/dotnet/