myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Knowledge Base (https://www.mycsharp.de/wbb2/board.php?boardid=68)
-- Artikel (https://www.mycsharp.de/wbb2/board.php?boardid=69)
--- [Artikel] UserControls / abgeleitete Controls im Designer von Visual Studio benutzen (https://www.mycsharp.de/wbb2/thread.php?threadid=36036)


Geschrieben von dr4g0n76 am 28.04.2007 um 11:02:
  [Artikel] UserControls / abgeleitete Controls im Designer von Visual Studio benutzen
1 DLL-Projekt erstellen


Zuerst erstellen wir ein DLL-Projekt in dem die ganzen von uns erstellten Controls enthalten sein sollen.

 
Abbildung 1


Ich habe das Projekt Test genannt anstelle von ClassLibrary1. Vielleicht sollte es sinnvoller UserControls oder MyControls heissen. Vergebt einfach einen für euch passenden Namen.




2 Steuerelement(e) erstellen

Ausserdem habe ich ein ganz einfaches Steuerelement erstellt: eine ComboBox deren BackColor im Constructor immer auf blau gesetzt wird.

Nicht vergessen die Verweise einzubauen, bei mir waren das die folgenden beiden:

using System.Windows.Forms;
using System.Drawing;

 
Abbildung 2



Damit haben wir schon die Hälfte hinter uns.


3 Projekt mit Form laden

Jetzt benötigen wir ein Projekt in dem wir das selbst erstellte Steuerelement mit dem Designer benutzen wollen.


Wenn das Control nicht in die gleiche DLL soll, dann erstellt einfach ein Windows-Forms-Projekt und speichert es ab. Oder ihr benutzt ein schon vorhandenes Projekt.

[IMG][/IMG]
Abbildung 3


4 Steuerelement in Toolbox hinzufügen


Jetzt geht ihr in diesem Projekt auf eine Form, in meinem Beispiel ist das die Form1.


Ihr müßt diese jetzt mit dem Designer anzeigen lassen. Am besten dazu den Projektmappenexplorer öffnen und die ToolBox einblenden.

 
Abbildung 4


So, jetzt benötgen wir einen Klick in die Toolbox (am besten an einer freien Stelle) mit der rechten Maustaste und selektieren den Menüeintrag „Elemente auswählen“ im aufgehenden Kontextmenü.


Im aufgehenden Dialog wählen wir dann unter „Durchsuchen“ unsere DLL aus, in der die Elemente vorhanden sind die wir mit dem Designer benutzen wollen.

 
Abbildung 5


Die hinzugefügten Controls werden, wenn diese kein eigenes Icon haben durch ein blaues Zahnrad gekennzeichnet. (s. obenstehendes Bild)
5Steuerelement mit dem Designer auf der Form aufbringen


Jetzt können wir das Steuerelement ganz normal mit dem Designer benutzen und auf der Form aufbringen:


Geschrieben von webstarg am 28.04.2007 um 21:43:
 
Hallo!

Sehr guter Artikel!

webstarg


Geschrieben von webstarg am 06.05.2007 um 20:36:
 
Hallo!

Könntest du bitte auch noch kurz erklären, wie man dem Objekt ein Icon zuweist?

Dankeschön.

mfg
webstarg


Geschrieben von 0815Coder am 02.07.2007 um 23:17:
 
man kann auch noch ein bisschen tricksen um mehr komfort zu erhalten:
anstatt "Neue Klasse" hinzufügen und dann von ComboBox (oder sonstwas) abzuleiten, wählt man neues "UserControl" und ändert dann die ableitung von : UserControl auf ComboBox.

(nun sollte man mal kurz kompilieren, weil der designer wahrscheinlich im Initialize() im MyCbBox.Designer.cs Properties von UserControl verwendet hat, die die ComboBox aber nicht kennt. Diese zeilen kann man getrost entfernen, war bei mir immer nur eine, könnte aber je nach BasisKlasse auch mehr sein.

Vorteil sit, dass der Designer mit den properties zur verfügung steht und man die Eigenschaften der ComboBox festlegen kann (obwohl nur ein grauer bildschirm angezeigt wird), zB Items hinzufügen, oder wenn man von ListView ableitet, Columns festlegen.


Geschrieben von slzbi am 02.07.2008 um 12:58:
 
die abbildungen können nicht dargestellt werden??


Geschrieben von JunkyXL am 03.07.2008 um 16:09:
 
Zitat von webstarg:
Könntest du bitte auch noch kurz erklären, wie man dem Objekt ein Icon zuweist?

Die Klasse braucht ein ToolboxBitmap Attribut.
So muss das dann aussehen:

C#-Code:
[ToolboxBitmap(typeof(Klassenname), "Klassenname.png")]
public class Klassenname : Control
{
}

Das Bild muss dem Projekt hinzugefügt werden. Im PropertyGrid von dem Bild muss als BuildAction = Embedded Resource gesetzt sein.


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 20.07.2019 10:12