![]() |
C# und eigene Komponenten
Moin,
kann ich in C# eigene Komponenten schreiben, so dass ich im OI Eigenschaften/Ereignisse bearbeiten kann? Wäre ein wenig umständlich, wenn ich eine Klasse schreibe und ich die Events jedes Objekts per hand schreiben müsste |
Re: C# und eigene Komponenten
Ich nehme mal an, du benutzt C#X?
Dann einfach deinem Projekt eine Komponente hinzufügen, falls du auch innerhalb der Komponente einen Designer haben willst. Wenn du bereits eine Klasse hast, musst du nur ICmponent implementieren. Willst du Properties der fertigen Komponente später direkt im Designer an controls binden: Implmenetiere einfach IListSoure. Eine kleine Liste von solchen Interfaces findest du in meinem Beitrag in der ".Net Diskussion". Die .Net Docs sollten sie dir eigentlich alle erklären können. ;) |
Re: C# und eigene Komponenten
Hallo!
Einfach eine neue Steuerelement-Bibliothek anlegen, darin findest Du dann schon ein neues "UserControl", also Deine Komponente. Die verfügt bereits über Standard-Properties und -Ereignisse. Prinzipiell werden dabei alle Properties im OI angezeigt, möchtest Du das bei einer Property nicht, verpasst Du Ihr das Attribut "[Browsable(false)]". Ereignisse fügst Du ein, indem Du einfach ein "public event MyDelegate foo" in deine Klasse einbaust ;-) Grüße Christian P.S.: Obiges Wissen bezieht sich auf .NET 2.0, weiß nicht ob es bei .NET 1.1 auch schon so war. |
Re: C# und eigene Komponenten
Moin Elvis,
danke für Deine Antwort. Also z.Z benutze ich noch die Konsolen-Version (csc.exe des 2.0 Frameworks). Nun wollte ich eine Komponente schreiben(Im Notepad) bis ich mir mal eine passende IDE zugelegt habe - Borland C# Builder wird es nicht sein. Eine Komponente in Delphi zuschreiben war ja easy, diese brauchte man ja nur per Register-Prozedur registrieren. Wie das bei C# ist, weiss ich nicht. Ich muss zugeben, ich habe nur Bahnhof verstanden, wie meintest Du das mit "ICmponent implementieren" ? *g* Edit: @Christian, ich schau mal nach, besten Dank :)... Wenn ich Probleme habe, editier ich hier nochmal ^^ |
Re: C# und eigene Komponenten
Kiek mal hier:
![]() Kein Grund für Notepad ;) Zitat:
|
Re: C# und eigene Komponenten
@Elvis: Perfekt, genau sowas habe ich gesucht! Wusste gar nicht, dass es bei Microsoft auch was kostenlos gibt *g*
Das mit IComponent habe ich immernoch nicht begriffen :oops: Gibt es dafür ein Beispiel? @Christian: Wie lege ich eine "Steuerelement-Bibliothek" an? Geht das in MSVC#2005EE ? |
Re: C# und eigene Komponenten
Hi!
Zitat:
File -> New -> Project Im Baum links unter "Visual C#" den Eintrag "Windows" wählen und dann rechts "Windows Control Library" Noch die Verzeichnisse unten anpassen, wie Du es haben willst -> Fertig Grüße Christian |
Re: C# und eigene Komponenten
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Christian,
wenn ich auf "New Project" gehe, habe ich dort nur [siehe Anhang] zur Wahl. Fürchte da ist nichts bei oder? Danke btw. |
Re: C# und eigene Komponenten
Hm. Komisch. Dann erstell dort mal 'ne Class Library und füge dann ein UserControl ein. Sollte es auch tun. Einfügen des UserControl:
Nachdem Du die Class Library erstellt hast, im Solution Explorer Rechtsklick auf die Library und im Kontextmenü Add->UserControl. Falls es das nicht gibt, nimm Add->NewItem und schau, was angeboten wird ;-) |
Re: C# und eigene Komponenten
Hat alles soweit geklappt wie Du gesagt hast - Danke. Ist es richtig, dass ich da nun so eine Art leere Form habe? Für eine nichtvisuele Komponente die ich schreiben möchte?
|
Re: C# und eigene Komponenten
Zitat:
@Pseudo: UserControl == TFrame Component == TComponent Zu IComponent können wir auch noch später kommen. Mache dir einfach eins klar: Du bist ein noob! :P Aber weißt du was? Ich bin auch einer, genau wie Christian und eigentlich jeder andere .Net Dev auf dem Planeten. Ich installiere gerade C#X, sollte also bei der nächten Frage wisen was bei dir geht und was nicht. ;) |
Re: C# und eigene Komponenten
Zitat:
Die habe ich noch nie erstellt, habe immer UserControl verwendet, weil man da hübscher "zusammenbauen" kann ;-) Aber es reicht wahrscheinlich, statt Add->UserControl auf Add->Component zu klicken :zwinker: //edit :autsch: --> :wall: |
Re: C# und eigene Komponenten
Liste der Anhänge anzeigen (Anzahl: 1)
Moin again :???:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: C# und eigene Komponenten
Du kannst einfach eine neue Klasse anlegen und ihr den Vorfahren Component geben.
Dadurch kannst du sie beim nächsten Mal im designer editieren. Du kannst aber auch ein UserControl anlegen und sofort den Vorfhren von UserControl auf Component ändern. Dadurch läuft e weiterhin als partial clas, also der hässliche Designer code landet außer Sichtweite in einer Extradatei. ;) Die Jungs bei MS sind doch echt verrückt... :lol: Integrieren den halben EnterpriseMan in C#X aber vergessen das Component template :lol: Zurück zur Frage nach dem Registrieren in die IDE: Sowas gibt es nicht mehr in der Form, die du kennst. Jede Komponente, die du innerhalb einer Solution (Solution==ProjectGroup) anlegst, wird autom. in der ToolBox ercheinen. Du kannst sie also benutzen *ohne* sie in die IDE registrieren zu müssen. Willst du Komponenten dauerhaft in der IDE haben einfach ein Rechtsklick auf die ToolBox und mit "Choose items" hast du das was du willst. ;) |
Re: C# und eigene Komponenten
:lol: Da bin ich ja echt froh, dass ich die Professional hab. Aber okay, irgendwoher muss der "geringe" Preis der Express-Version ja kommen ;-)
Schätze mal, wie Elvis' es beschrieben hat (UserControl anlegen und nach Component ändern) ist wohl am einfachsten. Und UserControl habe ich auf dem Screenshot schon gesehen! :zwinker: |
Re: C# und eigene Komponenten
Zitat:
Magst Du mir sagen, was hier falsch ist?
Code:
An die Membervariablen von "Me" komme ich irgendwie gar nicht :(. Bitte nicht schlagen <g> Es sind nur Versucge mit dem ganzen mal klarzukommen :mrgreen:
using System;
using System.Collections.Generic; using System.Text; using System.ComponentModel; public class Me { string Nickname; string Realname; string Username; } namespace PBLib { public class Client: Component { Me Me = new Me(); public Client() { Me. } } Zitat:
Danke euch 2. |
Re: C# und eigene Komponenten
Schaue mal hier:
Code:
So hat du eine öffentlich Lese-Property für das Feld me. Das keyword readonly bewirkt, dass du ein Feld nur initialisieren oder innerhalb eines Constructors bechreiben kannst. Ändert hier also nciht viel am Verhalten.
public class Me
{ string Nickname; string Realname; string Username; } public class Client : Component { private readonly Me me = new Me(); public Me Me { get { return me; } } } Die Felder der Klasse Me haben keinen access modifier was in C# autom. private heißt. Damit du sie im PropertyGrid eines Designers sehen kannst sollten sie durch Properties verpackt werden. ;) edit: initialisierung vergessen... |
Re: C# und eigene Komponenten
Nabend.
Wenn ich mich nicht irre (bin auch grad' am C#-lernen :wink: ), musst Du die auch als public deklarieren:
Code:
oder am besten auch gleich als Eigenschaft mit get- und set-Methode:
public class Me
{ public string Nickname; public string Realname; public string Username; }
Code:
MfG
public class Me
{ private string nickname; public string Nickname { get { return nickname; } set { nickname = value } } } PS: Nicht schlagen, wenn ich Mist erzähle :angel2: . Edit: Rechtschreibfehler. |
Re: C# und eigene Komponenten
Ne, hast keinen Mist erzählt, danke :thumb: . In Delphi waren Felder ohne explizite Angabe von "public" automatisch public...man muss sich einiges neu angewöhnen ... :lol:
Edit: Evlis Methode ganz überlesen.. *nachhol |
Re: C# und eigene Komponenten
Und wenn Du auch noch 'ne hübsche Darstellung im OI haben willst, kannst Du Dir mal diese beiden Beiträge ansehen.
![]() ![]() Grüße Christian //edit: Eher den Zweiten als den Ersten ;-) |
Re: C# und eigene Komponenten
@Elvis: Danke für das Beispiel. Da musste ich schon etwas überlegen um das nachzuvollziehen (wegen den ganzen Me's *g*)
Das wollte ich überhaupt fragen... Ist jede publicproperty nachher automatisch published? Wie siehts aus, wenn ich einige propertys nicht im "OI" sehen möchte?. @Christian: Danke, ich guck gleich mal rein :D |
Re: C# und eigene Komponenten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz