Fragensteller
Virtual Desktop

Allgemeine Diskussion
-
Hallo,
Ich stecke nochmals in einer kleinen Lücke. Ich möchte meinen eigenen "Desktop" programmieren, so wie man eben den Desktop kennt. (Ordner, Anwendungen, (löschen, hinzufügen),..)
Ich würde jeden Programm über ein Einstellungsfenster definieren, dass dann das Programm weiß, welche Programme er Anzeigen soll und welche nicht, nur bin ich mir nicht sicher ob es:
1.) Klug ist sie als "Picturebox" anzeigen zu lassen.
2.) Um ein "Programm" vom virtuellen Desktop zu löschen bräuchte ich dann ein ContextMenü, nur woher weiß dann das Programm welche (wenn) Picturebox gemeint ist, wenn sie nicht direkt im Programm definiert ist? zB eben für das ContextMenü oder zum Löschen, Kopieren etc.
Hier ein Screenshot wie das ganze Aussieht:
https://scontent-a-vie.xx.fbcdn.net/hphotos-prn2/t31/1781616_648450701881122_114924255_o.jpg
Und eben auf dieser "bunten" Fläche sollen dann wie am Desktop die definierten Anwendungen angezeigt werden.
Mit freundlichen Grüßen
- Typ geändert Ciprian Bogdan Donnerstag, 13. Februar 2014 18:05 keine Rückmeldung des Fragestellenden
Alle Antworten
-
Hallo,
zu 1.
Je nachdem was du ganz genau vor hast, gibt es verschiedene Möglichkeiten. Eine PictureBox dürfte aber keine schlechte Wahl sein.zu 2.
Über folgenden Code kommst du an das Control heran:private void tTToolStripMenuItem_Click(object sender, EventArgs e) { var pb = ((sender as ToolStripDropDownItem).GetCurrentParent() as ContextMenuStrip).SourceControl as PictureBox;
Der sender-Parameter beschreibt das auslösende MenuItem. Dieses gibt über die GetCurrentParent-Methode das besitzende MenuStrip zurück. Wenn man dieses in ein ContextMenuStrip castet, kann man das Control über die SourceControl-Eigenschaft auslösen.
Ich weiß nicht was du genau vor hast, aber die Anwendungen einfach in eine andere einzwängen ist bei vielen nur schwierig realisierbar.
Wenn das Design der Anwendung selbst eine große Rolle spielt, dann solltest du auf WPF setzen. Das ist da deutlich leistungsfähiger. Siehe auch: Einführung in WPFKoopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke. -
Hallo,
Ich habe deinen Code ausprobiert nur komme ich nicht ganz mit was du meinst. :(
Vor habe ich genau einen Desktop nachzubasteln. Gedacht habe ich das ganze so: Das man im Programm direkt eine PictureBox hinzufügen kann und diese dann beliebig im Programm auf eine Position bringen kann. Wenn man dann eben Doppelklickt soll es ein Programm welches am Computer installiert ist ausführen. Welches Programm ausgeführt werden soll, soll vorher abgespeichert werden mit dem Pfad der Exe, und bei bedarf auch wieder gelöscht werden. (Dies ganze passiert dann in einer Eigenen "Einstellungs"-Form.
Nun möchte ich:
1.) Das beim nächsten Start des Programms alle Pictureboxen auf der vorherigen Position sind wie beim Schließen.
2.) Beim Doppelklick einer Picturebox das jeweilige Programm startet, was ebenfalls vorher abgespeichert wurde mit dem Exe Pfad.
Wenn ich jetzt eine neues Programm hinzufügen möchte, dann muss ich ebenfalls weitere Events "normalerweise" Erstellen für zB Die Picturebox bewegen. Nur ich denke das es hier eine bessere Methoden gibt als 100x das gleiche Event vorzuschreiben.
Noch ein kleines Beispiel:
Ich starte das Programm und es sind noch keine "Datein am Desktop" des Programms. Nun füge ich über das Einstellungsfenster ein Programm hinzu welches danach über eine Picturebox angezeigt wird und mit dem definierten Pfad bei Doppelklick gestartet werden soll.
Das bewegen der Pictureboxen bekäme ich zwar zustande mit folgenden Code, aber wie vorher erwähnt müsste ich mit meinen derzeitigen Wissen 100e Events vorschreiben, damit auch alle dann bewegbar sind.
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { PictureBox send = (PictureBox)sender; if (send.Tag != null) { Point start = (Point)send.Tag; send.Location = new Point(send.Location.X + e.X - start.X, send.Location.Y + e.Y - start.Y); } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { PictureBox send = (PictureBox)sender; send.Tag = e.Location; } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { PictureBox send = (PictureBox)sender; send.Tag = null; }
Mit freundlichen Grüßen
- Bearbeitet Bashesz Mittwoch, 5. Februar 2014 17:59
-
Hi Bashesz,
eine Mögichkeit wie du Anwendungsinformationen Speicher kannst findest du hier.(Sollte zu 1 und 2 passen).
Deine PicturBoxen wirst du ja in ihrgend einer Art Kontainer aufbewaren. Warscheinlich eine Liste oder so. Hier kannst du dann einfach mit einer Schleife drüber laufen und den Handle auf die Methode (Event) hinzufügen. Siehe hier.
Verschieben sollte aber auch mit Drag & Drop funktionieren.
Das hinzufügen von Programmen könnte man über einen Rechtsklick auf deinem Desktop realisieren. Du merkst die Position und bietest ein Menü an, in dem man Programm hinzufügen auswählen kann. Wenn der Menüpunkt ausgewählt wird. Läst du einen Dialog aufgehen, in dem die benötigten Einstellungen gemacht werden können. Durch bestätigen wird dann an der ausgewählten Stelle das Programm erzeugt.
MFG
Björn
-
-
Im Event ist das Objekt sender der Button, b.z.w bei dir die PictureBox. Hier kannst du dann zum Passenden Objekt Casten. Um damit das passende Controll anzusprechen. Wie du der Picturbox, das passende Event hinzufügst findest du oben unter Handler.
MFG
Björn
-
Hi Bashesz,
Ist Deine Situation eigentlich abgeklärt ? Können wir den Thread schließen? Wenn ja - bitte markiere die hilfreichen Beiträge "als Antwort".
Viele Grüße,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
*****************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
*****************************************************************************************************
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.