Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
UserControl wird in der Toolbox nicht grafisch dargestellt
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

UserControl wird in der Toolbox nicht grafisch dargestellt

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.975

beantworten | zitieren | melden

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

Stichwort ToolboxBitmap
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

Hallo FZelle,

nee das habe ich noch nicht gemacht. Bis dato war mir gar nicht bewußt, dass so etwas gemacht werden muss!
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

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??
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.975

beantworten | zitieren | melden

1. Wie hast du das hinzugefügt?
2. Es passiert nie etwas automatisch.
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.355

beantworten | zitieren | melden

Hallo,

hast du denn auch die BMP-Datei in deinen Ressourcen drin? s. ToolboxBitmapAttribute-Konstruktor (Type):
Zitat von "MSDN"
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.
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.355

beantworten | zitieren | melden

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...
Zitat von "MSDN"
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.
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

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"!
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
macke_a
myCSharp.de - Member



Dabei seit:
Beiträge: 291
Herkunft: Münsterland

Themenstarter:

beantworten | zitieren | melden

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???
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

beantworten | zitieren | melden

Das du WindowsForm Komponenten nur in Windows Forms verwenden kannst sollte klar sein...
Zitat
StatusLabel : UserControl
UserControl ist eine Windows.Forms Klasse ob es für intelligente Geräte auch etwas ähnliches gibt weiß ich nicht
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.975

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers