Hallo 😃
Ich habe mit VS 2008 ein von UserControl eigenes grafisches Element (Panel mit zwei Labels) erstellt. Jetzt möchte ich gerne dieses in einen anderen Projekt einbinden.
Ich kann dieses Element in der Toolbox über Extras-> Toolboxelemente auswählen-> .NET Frameworkkomponenten einbinden und der Name des UserControls erscheint auch in der Liste.
Soweit so gut. Was aber nicht passiert ist die optische Darstellung dieses Elementes in der Toolbox, so wie die anderen Controls sichtbar sind.
Jemand ne Idee, was die Ursache für den Fehler sein könnte?
Da das nicht auf magische Art selbständig passiert, musst Du da auch das entsprechende Bild ( Icon ) erzeugen.
Hast Du das gemacht?
Stichwort ToolboxBitmap
Hallo FZelle,
nee das habe ich noch nicht gemacht. Bis dato war mir gar nicht bewußt, dass so etwas gemacht werden muss!
Ich habe jetzt ein Bitmap zur meinem UserControl hinzugefügt.
Leider erscheint das UserControl immer noch nicht in meiner Toolbox.
Woran kann es noch liegen?? Ich bin für jeden Tip dankbar!
Warum erscheint in einem neuen Projekt das User Control nicht in der Toolbox, außer in dem Projektordner mit ich das UserControl erstellt wurde? Wieso funktioniert dies einfach nicht??
Besten Dank erstmal für deine Mithilfe!
In meinem Sourcecode habe ich die folgenden Zeilen stehen:
[ToolboxBitmap(typeof(StatusLabel))]
public partial class StatusLabel : UserControl
{
public StatusLabel()
{
InitializeComponent();
}
}
Und fehlt etwas?
Hallo,
hast du denn auch die BMP-Datei in deinen Ressourcen drin? s. ToolboxBitmapAttribute-Konstruktor (Type):
Dieser Konstruktor sucht in der Assembly, die den vom t-Parameter angegebenen Typ definiert, nach eingebetteten Ressourcen. Der Konstruktor sucht nach einer Ressource mit dem Namen namespace.classname.bmp, wobei namespace für den Namespace steht, der die Definition der vom t-Parameter angegebenen Klasse enthält. Wenn sich ControlA beispielsweise im in AssemblyA.dll gespeicherten NamespaceA befindet, sucht der Konstruktor in AssemblyA.dll nach einer Ressource mit dem Namen NamespaceA.ControlA.bmp.
Da gibt es eine kleine Diskrepanz!
Folgendes habe ich zum Testen geändert:
[ToolboxBitmap(typeof(StatusLabel), "Resources.ANT.bmp")]
public partial class StatusLabel : UserControl
{
public StatusLabel()
{
InitializeComponent();
}
}
In meiner Projektdatei habe ich den Ordner Resources angelegt und dort das Bitmap ANT.bmp hinterlegt.
Hast Du dieses gemeint, Th69?
Versuch mal deine UserControl aus dem SourceExplorer in die ToolBox zu ziehen.
Und du kannst dein UserControl natürlich in der ToolBox nur sehen wenn du gerade ein Form offen hast.
@Fzelle ich denke es geht darum das userControl in der ToolBox anzuzeigen nicht mit einem eigenen Icon.
Hallo macke_a,
fast - die Bitmap muß anhand des Namens deines übergebenen Typs bezeichnet sein.
Bei
namespace MyNamespace
{
[ToolboxBitmap(typeof(StatusLabel), "ANT.bmp")]
public partial class StatusLabel : UserControl
{
public StatusLabel()
{
InitializeComponent();
}
}
}
muß deine Bitmap den Namen "MyNamespace.ANT.bmp" tragen.
Lies dir immer die MSDN-Doku zu den eingesetzten Klassen und Methoden durch...
Dieser Konstruktor sucht in der Assembly, die den vom t-Parameter angegebenen Typ definiert, nach eingebetteten Ressourcen. Der Konstruktor sucht nach einer Ressource mit dem Namen namespace.name, wobei namespace für den Namespace steht, der die Definition der vom t-Parameter angegebenen Klasse enthält. Angenommen, es handelt sich bei ControlA um eine Klasse im in AssemblyA.dll gespeicherten NamespaceA, und Sie haben "MyBitmap.bmp" an den name-Parameter übergeben. Dann durchsucht der Konstruktor AssemblyA.dll nach einer Ressource mit dem Namen NamespaceA.MyBitmap.bmp.
Ich erläutere mein Problem noch mal:
In einem Projekt habe ich meine UserControl erstellt. Dieser UserControl möchte ich gerne in dem anderen Projekt in dessen Toolbox verwenden.
Projekt 1: UserControl wurde erzeugt und ist auch in der Toolbox sichtbar! Alle bestens!
Projekt 2: Das im Projekt 1 erzeugte UserControl lässt sich nicht in die Toolbox des Projektes 2 einbinden. Ich kann das UserControl über die "Toolboxelemente Liste auswählen", aber es wird nicht dargestellt.
Dafür suche ich die Lösung meines Problems..
@Th69: Ich überprüfe deine Aussage "auf Erfolg mal eben"!
Dein erstes Projekt in dem du dein UserControl erstellst sollte eine dll ausspucken wenn du diese als Referenz in dein neues Projekt einbindes musst du nur noch Rebuild drücken und das ganze sollte in deiner ToolBox sein.
Zumindest Funktioniert das beim mir so.
Ich glaub die Ursache liegt ganz woanders.
Ich habe gerade ein neues WindowsForms-Anwendung Projekt angelegt. In diesem neuen Projekt war das UserControl in der Toolbox.
Das andere Projekt, wo ich versuche das UserControl einzubinden war kein WindowsForms-Anwendung Projekt sondern ein "Projekt für intelligente Geräte".
In diesem Projekt habe ich dann ein Windows Forms Element hinzugefügt!
Und irgendwo dort gibt es eine Differenz, warum diese Toolbox das UserControl nicht akzeptiert.
Kann das möglich sein???
Das du WindowsForm Komponenten nur in Windows Forms verwenden kannst sollte klar sein...
StatusLabel : UserControl
UserControl ist eine Windows.Forms Klasse ob es für intelligente Geräte auch etwas ähnliches gibt weiß ich nicht
@macke_a:
Ist jetzt nicht wirklich dein ernst, oder?
Natürlich kann man keine WindowsForms oder andere gegen das reguläre FW compilierte Assemblies in CF benutzen.