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/


Anmelden zum Antworten