Laden...

UserControl wird in der Toolbox nicht grafisch dargestellt

Erstellt von macke_a vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.537 Views
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren
UserControl wird in der Toolbox nicht grafisch dargestellt

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?

F
10.010 Beiträge seit 2004
vor 12 Jahren

Da das nicht auf magische Art selbständig passiert, musst Du da auch das entsprechende Bild ( Icon ) erzeugen.
Hast Du das gemacht?

Stichwort ToolboxBitmap

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

Hallo FZelle,

nee das habe ich noch nicht gemacht. Bis dato war mir gar nicht bewußt, dass so etwas gemacht werden muss!

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

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!

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

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??

F
10.010 Beiträge seit 2004
vor 12 Jahren
  1. Wie hast du das hinzugefügt?
  2. Es passiert nie etwas automatisch.
M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

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?

4.938 Beiträge seit 2008
vor 12 Jahren

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.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

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?

C
258 Beiträge seit 2011
vor 12 Jahren

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.

4.938 Beiträge seit 2008
vor 12 Jahren

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.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

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"!

C
258 Beiträge seit 2011
vor 12 Jahren

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.

M
macke_a Themenstarter:in
291 Beiträge seit 2007
vor 12 Jahren

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???

C
258 Beiträge seit 2011
vor 12 Jahren

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

F
10.010 Beiträge seit 2004
vor 12 Jahren

@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.