Hallo Leute,
ich bin aktuell daran ein neues Projekt umzusetzen. Das Programm soll quasi nur als TrayIcon laufen - und beim Klicken darauf, soll sich eine Art "Layer" öffnen, der weiterführende Informationen enthält.
Die weiterführenden Informationen sind an sich überhaupt kein Problem, das habe ich im Griff und das funktioniert in einer extra Windows-Forms Anwendung bereits problemlos.
Nun möchte ich gerne den Part mit dem TrayIcon umsetzen. Das kann man ja praktischerweise auch ganz toll direkt im VS aktivieren. Jetzt will ich aber wissen, wie ich sowas hinbekomme:
FreeSpaceTab: eingebundene Laufwerke im Blick
Mir geht es dabei um das Verhalten auf dem Screenshot. Wenn ich auf mein TrayIcon klicke, soll sich mein "Layer" (Windows Form?) öffnen und quasi unten am TrayIcon "andocken". Bei erneutem Klicken (oder klicken neben das Fenster) soll sich der "Layer" wieder schließen. Wichtig ist hier eben, dass da kein extra Fenster irgendwo aufgeht auf dem Bildschirm (und auch, dass man es nicht verschieben kann) - es soll schlichtweg so "angedockt" bleiben wie der Layer auf dem verlinkten Screenshot.
Wie macht man denn sowas?
Ja, du machst einfach eine entsprechende Form ohne Rahmen etc., und setzt sie an die richtige Position.
Das heißt, dass es dafür keine vorgefertigten Methoden oder Properties gibt?
Zumal sich die Position des Icons ja stetig verändern kann. Woher bekomme ich denn die Eigenschaft der Position des TrayIcons?
Moin,
versuch mal ein ContexMenü. Das Menü nimmt ToolStripItems entgegen. ToolStripItem erbt (direkt) von Component. Label, ProgressBar und PictureBox erben von Control, welches wiederum von Component erbt. Somit sollte das ContextMenü die entsprechenden Element selber enthalten können.
Quasi ein Control mit ein paar Label, ein Bild und einem ProgressBar (für die Kapazität). Und das Control dann dem ContextMenü hinzufügen.
hand, mogel
Hallo voodoo44,
ich denke auch, dass das (mal abgesehen davon dass der Screenshot von einem Mac ist) einfach das (Kontext-)Menü ist, das ein NotifyIcon standardmäßig besitzt (besitzen kann) und (zumindest bei Rechtsklick) auch automatisch anzeigt. Damit entfällt die Notwendigkeit, ein eigenes Form zu erstellen und zu positionieren.
Wenn du Informationen darstellen willst, die nicht rein textuell sind, kannst du das MenuItem.DrawItem-Ereignis verwenden. Siehe auch [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox).
herbivore